Jasmine - 测试一个简单的初始化函数
Jasmine - Test a simple initialization function
我开始使用 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 如上所述,但正如我所说,我不知道测试它的正确方法是什么。
谢谢。
更好的方法是不 spyOn
myApp.initializer.eventDelegation();
然后期待该方法应该做的一些事情。
我们通常 spyOn
我们要测试的文件中不存在的方法。例如,如果我正在为依赖于服务的 angularjs 控制器文件编写测试用例,那么我将 spyOn
在我的控制器中调用的服务方法。
你在上面的测试中所做的是模拟一个已经存在于文件中的方法。更好的方法是调用 myApp.initializer.initializeApp
并期望 myApp.initializer.eventDelegation();
被调用。还要确保尽可能多地期待行为。这将提高测试用例的质量。
我开始使用 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 如上所述,但正如我所说,我不知道测试它的正确方法是什么。
谢谢。
更好的方法是不 spyOn
myApp.initializer.eventDelegation();
然后期待该方法应该做的一些事情。
我们通常 spyOn
我们要测试的文件中不存在的方法。例如,如果我正在为依赖于服务的 angularjs 控制器文件编写测试用例,那么我将 spyOn
在我的控制器中调用的服务方法。
你在上面的测试中所做的是模拟一个已经存在于文件中的方法。更好的方法是调用 myApp.initializer.initializeApp
并期望 myApp.initializer.eventDelegation();
被调用。还要确保尽可能多地期待行为。这将提高测试用例的质量。