Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
在typescript中对导出的函数进行单元测试_Typescript_Karma Jasmine - Fatal编程技术网

在typescript中对导出的函数进行单元测试

在typescript中对导出的函数进行单元测试,typescript,karma-jasmine,Typescript,Karma Jasmine,我正在尝试用typescript为导出函数编写一个单元测试,如下所示: module mainStream.utilities { "use strict"; export function getSpriteClassFromDataType(type: string): string { var retClass: string = ""; if (type) { switch (type.toString()) {

我正在尝试用typescript为导出函数编写一个单元测试,如下所示:

module mainStream.utilities {
    "use strict";

    export function getSpriteClassFromDataType(type: string): string {
        var retClass: string = "";

        if (type) {
            switch (type.toString()) {
                case "1":
                    retClass = "text";
                    break;
                case "2":
                    retClass = "number";
                    break;
                case "3":
                    retClass = "yesno";
                    break;
                case "4":
                    retClass = "datetime";
                    break;
                case "9":
                    retClass = "decimal";
                    break;
                case "10":
                    retClass = "xml";
                    break;

                default:
                    retClass = "text";
            }
        }

        return retClass;
    }
}
这是一个非常简单的函数,用于从整数字符串(“1”)=“text”中获取文本值;代码并不是实现这一点的最充分的方法,因为枚举很可能是有效的,我只是尝试为此编写一个简单的测试

这就是我所拥有的,但是Karma抱怨“obj”部分,因为它不在类中,所以我也不能使用名称空间(模块名)作为对象

/// <reference path="../../../mainStreamApp/utilities/datatypeclassresolver.ts" />
namespace unit.tests.utilities {
    "use strict";

    describe("mainStreamApp.utilities", () => {
        describe("DataTypeClassResolver", () => {

            it("should return the sprite class name for a text data type", () => {
                spyOn(mainStreamApp.utilities, "mainStreamApp.utilities.getSpriteClassFromDataType");   
                let dataType = mainStreamApp.utilities .getSpriteClassFromDataType("1");             
                expect(mainStreamApp.utilities.getSpriteClassFromDataType).toHaveBeenCalledWith("1");
                expect(dataType).toBe("text");
            });

        });
    })
}
//
命名空间unit.tests.utilities{
“严格使用”;
描述(“主流应用程序实用程序”,()=>{
描述(“DataTypeClassResolver”,()=>{
它(“应该返回文本数据类型的精灵类名”,()=>{
spyOn(mainStreamApp.utilities,“mainStreamApp.utilities.getSpriteClassFromDataType”);
让dataType=mainStreamApp.utilities.getSpriteClassFromDataType(“1”);
期望(mainStreamApp.utilities.getSpriteClassFromDataType).toHaveBeenCalledWith(“1”);
expect(数据类型).toBe(“文本”);
});
});
})
}

有没有一种特殊的方法可以做到这一点,而不必将函数封装在类中?

spyOn
和方法调用期望在这里是多余的。只需调用该方法并验证结果:

it("should return the sprite class name for a text data type", () => {
    let dataType = mainStreamApp.utilities.getSpriteClassFromDataType("1");
    expect(dataType).toBe("text");
});