Jasmine - 监视在同一文件中调用的函数
Posted
技术标签:
【中文标题】Jasmine - 监视在同一文件中调用的函数【英文标题】:Jasmine - Spy on a function that is called in same file 【发布时间】:2016-11-21 07:52:48 【问题描述】:这困扰了我一段时间。我在同一个文件中有两个函数。
//fun.ts
export function fun1()
let msg = fun2();
return msg;
export function fun2(): string
return "Some message";
我有一个打字稿规范,它存根 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")
);
);
但是当我运行规范时,我得到的输出是
Failures:
1) Stubing should stub the return value
1.1) Expected 'Some message' to equal 'A different message'.
我在 typescript 中编写了测试,然后我有一个 gulp 脚本,它成功地转换并运行了 jasmine 规范。一切正常,我唯一想不通的是为什么间谍不起作用。将不胜感激。
【问题讨论】:
我无法重现这个。如果您添加expect(Fun.fun2()).toEqual("A different message")
,您的测试是否通过?
我更新了问题以反映您的评论。
【参考方案1】:
我终于想通了。在 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";
现在当规范执行时,我看到了
.
1 spec, 0 failures
【讨论】:
感谢您发布此答案!完美运行。以上是关于Jasmine - 监视在同一文件中调用的函数的主要内容,如果未能解决你的问题,请参考以下文章
Jasmine:监视一个名为 X 次的函数,并获得第 n 次调用
如何在 Jasmine 1 中监视 Falcor 数据模型构造函数