car*_*ase 4 testing unit-testing node.js jasmine typescript
这困扰了我一段时间。我在同一个文件中有两个函数。
//fun.ts
export function fun1(){
let msg = fun2();
return msg;
}
export function fun2(): string{
return "Some message";
}
Run Code Online (Sandbox Code Playgroud)
我有一个打字稿规范,它存根 fun2 并调用 fun1。
//fun.spec.ts
import * as Fun from 'fun';
describe('Stubing', () => {
it('should stub the return value', () => {
spyOn(Fun, 'fun2').and.returnValue("A different message");
expect(Fun.fun1()).toEqual("A different message")
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我运行规范时,我得到的输出是
Failures:
1) Stubing should stub the return value
1.1) Expected 'Some message' to equal 'A different message'.
Run Code Online (Sandbox Code Playgroud)
我用打字稿编写了测试,然后我有一个 gulp 脚本,它成功地转换并运行了 jasmine 规范。一切正常,我唯一想不通的是为什么间谍不工作。一个解释将不胜感激。
我终于想通了这一点。在 fun.ts 中,我直接调用了 fun2 对象,但我的 Jasmine 规范无法访问该对象。Jasmine 规范可以访问的唯一对象是导出对象。如果我想让间谍工作,我需要在导出对象上调用 fun2。
//fun.ts
export function fun1(){
let msg = exports.fun2();
console.log(msg);
}
export function fun2(): string{
return "Some message";
}
Run Code Online (Sandbox Code Playgroud)
现在当规范执行时我看到
.
1 spec, 0 failures
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |