如何让jasmine模拟数组的值



我现在正在使用这个库,试图让Handlebars在我的流星应用程序的服务器端工作(https://github.com/EventedMind/iron-router#using-a布局-带字段)。

我已经开始工作了,但我现在想修复我的单元测试。我对Jasmine有点初学者,所以希望这个问题不要太愚蠢。如果我完全走错了轨道,请告诉我。

目前,我正试图在茉莉花单元测试中模拟这一行。

Handlebars.templates['ResponseToSubscribers']({dateSent: new Date()})

我知道如何模拟方法,但不知道如何模拟数组值。

我试过这样做。

spyOn(Handlebars, 'templates').andReturn({"ResponseToSubscribers": (obj) -> "html"})

但它给了我这个错误。

templates() method does not exist

我怎样才能嘲笑[]并让它得到回报?

对添加间谍的方式进行小的更正将解决问题。必须对对象和该对象上的函数/值进行间谍注册。将注册修改为spyOn(Handlebars.templates, 'ResponseToSubscribers')将解决您的问题。

样本代码:

describe("Test Array", function() {
it("checks the actual value", function() {
var t1 = Handlebars.templates['ResponseToSubscribers']('dummy');
expect(t1).toEqual(1);
});
it("checks handle bar value", function() {
spyOn(Handlebars.templates, 'ResponseToSubscribers').and.returnValue(2);
var t = Handlebars.templates['ResponseToSubscribers']('dummy');
expect(t).toEqual(2);
});
});

最新更新