【问题标题】:Jasmine - Spy on a function that is called in same fileJasmine - 监视在同一文件中调用的函数
【发布时间】: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"),您的测试是否通过?
  • 我更新了问题以反映您的评论。

标签: node.js unit-testing testing typescript jasmine


【解决方案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

【讨论】:

  • 感谢您发布此答案!完美运行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
相关资源
最近更新 更多