在typescript中对导出的函数进行单元测试
我正在尝试用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()) {
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");
});