Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何在jasmine和testmethod中编写单元测试而不调用其他方法?_Unit Testing_Typescript_Jasmine - Fatal编程技术网

Unit testing 如何在jasmine和testmethod中编写单元测试而不调用其他方法?

Unit testing 如何在jasmine和testmethod中编写单元测试而不调用其他方法?,unit-testing,typescript,jasmine,Unit Testing,Typescript,Jasmine,例如,该类: export class List<T> { private _count: number; private _items: Array<T>; constructor() { this._count = 0; this._items = []; } get(index: number) { return this._items[index]; }

例如,该类:

export class List<T> {
    private _count: number;
    private _items: Array<T>;

    constructor() {
        this._count = 0;
        this._items = [];
    }

    get(index: number) {
        return this._items[index];
    }

    add(item: T) {
        this._items[this._count] = item;
        this._count++;
    }
}
导出类列表{
私人_计数:数字;
私有_项:数组;
构造函数(){
这个。_count=0;
此项。_项=[];
}
获取(索引:编号){
返回此项。_项目[索引];
}
增加(项目:T){
此._项目[此._计数]=项目;
这个._count++;
}
}
jasmine中的单元测试:

import { List } from './list';

describe( 'List', () => {

    let testList: List<string>;

    beforeEach(() => {
        testList = new List<string>();
    } );

    it( 'get() method works', () => {
        //how to test get() method without calling add() method?
        testList.add( "string1" );
        testList.add( "string2" );
        testList.add( "string3" );

        let s1: string = testList.get( 0 );
        let s2: string = testList.get( 1 );
        let s3: string = testList.get( 2 );

        expect( s1 ).toBe( "string1" );
        expect( s2 ).toBe( "string2" );
        expect( s3 ).toBe( "string3" );
    } );
}
从“/List”导入{List};
描述(‘列表’,()=>{
let testList:List;
在每个之前(()=>{
testList=新列表();
} );
它('get()方法有效',()=>{
//如何在不调用add()方法的情况下测试get()方法?
添加(“string1”);
添加(“string2”);
添加(“string3”);
设s1:string=testList.get(0);
设s2:string=testList.get(1);
设s3:string=testList.get(2);
预期(s1)为(“第1条”);
预期(s2)为“第2条”;
预期(s3)为“第3条”;
} );
}

我认为,这不是单元测试,而是集成测试,那么如何编写正确的单元测试呢?我看了mock,但不知道如何在这种情况下使用它。

作为第一个选项,您可以在测试get方法之前修复状态,即在添加项之前添加检查列表是否为空。作为第二个选项,您可以尝试使用initia添加构造函数对空构造函数和带有项的构造函数进行测试。然后您可以在不调用add方法的情况下重新编写测试

但我认为这并不重要,因为在任何情况下,您都会调用其他方法。单元测试建议与HTTP、数据库等其他组件隔离