如何在测试代码中模拟一个方法,并在生产代码中声明" d?

时间:2014-10-12 20:06:34

标签: mocking typescript

在我的生产代码中,我有几行代码宣布了两个与Google Analytics一起使用的功能:

declare function ga(command: string, type: string, exceptionDetails: Object);
declare function ga(command: string, type: string, category: string, action: string, label: string)

在我的单元测试代码中,我想实现这些函数的模拟,以便它什么都不做。但是,我的app.tests.ts引用了app.ts,所以我不能简单地做一些像

这样的事情
var ga = (command: string, type: string, exceptionDetails: Object) => { };

因为这是一个重复的定义。

如果不将ga定义添加到我的单元测试运行器html中,我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:0)

您可以通过替换其值来覆盖该函数。你在你的例子中几乎这样做,但是因为你已经把var放在它前面,它看起来像意外的重复。

删除var,然后只有:

ga = (command: string, type: string, exceptionDetails: Object) => { };

插图的简化示例:

var ga = (command: string, type: string, exceptionDetails: Object) => { alert('hi'); };

// ...

ga = (command: string, type: string, exceptionDetails: Object) => { alert('overridden'); };


// Alerts "overridden"
ga('a', 'b', {});