Jasmine - 间谍在同一文件中调用的函数

时间:2016-07-18 15:59:06

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

这让我困扰了一段时间。我在同一个文件中有两个函数。

//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'.

我用打字稿写了测试,然后我有一个成功转换并运行茉莉花规格的gulp脚本。一切正常,我唯一能弄明白的是间谍不工作的原因。我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

我终于弄明白了。在fun.ts中,我直接调用fun2对象,但是我的Jasmine规范无法访问该对象。 Jasmine规范可以访问的唯一对象是exports对象。如果我想让间谍工作,我需要在exports对象上调用fun2。

//fun.ts
export function fun1(){
    let msg = exports.fun2();
    console.log(msg);
}

export function fun2(): string{
    return "Some message";
}

现在,当规范执行时,我看到了

.
1 spec, 0 failures