我从Karma和Jasmine开始进行单元测试。我是第一次真正的考试,我想知道自己是否做得好。
我有这个方法调用三个初始化函数。
myApp.initializer.initializeApp = function () {
myApp.initializer.eventDelegation();
myApp.initializer.initializeGlobals();
myApp.scrollManager.initialize();
};
如果我没有进行测试,Karma-Coverage告诉我initializeApp没有被覆盖,所以我想做一个测试来验证是否一切都是正确的。需要什么样的测试?如果我写这两个不同的测试,Karma-coverage告诉我功能现在已经涵盖。
describe ("Initializations suite", function(){
it ("must check if functions are defined before call them", function(){
spyOn(myApp.initializer, "eventDelegation");
myApp.initializer.initializeApp();
expect(myApp.initializer.eventDelegation).toHaveBeenCalled();
});
});
或
describe ("Initializations suite", function(){
it ("must check if functions are defined before call them", function(){
expect(myApp.initializer.initializeApp).not.toThrow();
});
});
这两项测试都使initializeApp成为可能,但正如我所说,我不知道测试它的正确方法是什么。
谢谢。
答案 0 :(得分:0)
更好的方法不是spyOn
myApp.initializer.eventDelegation();
,而是期待这个方法应该做的一些事情。
我们通常会spyOn
我们要测试的文件中不存在的方法。例如,如果我正在为依赖于服务的angularjs控制器文件编写测试用例,那么我将spyOn
在我的控制器中调用的服务方法。
您在上述测试中所做的是,模拟了文件中已存在的方法。更好的方法是调用myApp.initializer.initializeApp
并期望调用myApp.initializer.eventDelegation();
。同时确保尽可能多地期待行为。这将提高测试用例的质量。