【发布时间】:2017-10-15 23:38:05
【问题描述】:
我是在 Angular 中使用 Jasmine 进行单元测试的新手。
我目前正在测试一个服务,它有一个名为 loadSomething(id) 的函数,并且我在其中添加了一个 console.info。
我的服务:
function loadSomething(id)
{
console.info('this is a test message');
return (a promise from a POST request)
}
这是我的测试(规范)文件:
//verify that the load function exists
it('load snapshot',function(){
expect(MyService.loadSomething(108)); //statement 1
spyOn(MyService, 'loadSomething').and.callThrough(); //statement 2
});
所以,我在网上看到 SpyOn 的 callthrough 方法调用了 ACTUAL 函数。 但是,当我使用期望语句(语句 1)运行我的测试时,会调用 console.info 消息(工作正常)。另一方面,当我注释掉语句 1 并取消注释 SpyOn(语句 2) 时,我不再收到 console.info 消息。
我预计会发生完全相反的情况。 我是不是理解错了?
(代码的其余部分工作正常,无论是规范文件还是实际服务,我只是不太了解这个具体的东西)
【问题讨论】:
标签: angularjs unit-testing jasmine karma-jasmine spyon