TypeError:在使用Jasmine创建间谍时无法读取属性'args'

时间:2014-06-02 14:04:07

标签: javascript backbone.js tdd jasmine bdd

我正在关注Backbone Fundamentals书籍(http://addyosmani.github.io/backbone-fundamentals/#jasmine)中的一个教程,我正在尝试创建一个间谍来测试验证。

以下代码在我的SpecRunner中产生以下错误:

'TypeError:无法读取未定义'

的属性'args'
it('Can contain custom validation rules, and will trigger an invalid event on failed validation.', function() {

    var errorCallback = jasmine.createSpy('-invalid event callback-');

    var todo = new Todo();

    todo.on('invalid', errorCallback);

    todo.set({done:'a non-boolean value'});

    var errorArgs = errorCallback.mostRecentCall.args;

    expect(errorArgs).toBeDefined();
    expect(errorArgs[0]).toBe(todo);
    expect(errorArgs[1]).toBe('Todo.done must be a boolean value.');
});

我搜索得很高,但收效甚微。我也试过更换:

var errorArgs = errorCallback.mostRecentCall.args;

使用:

var errorArgs = errorCallback.calls.mostRecent();

这似乎是茉莉花文档中使用的内容,但仍然是同样的问题。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您链接的教程使用的是Jasmine 1.3,您可能正在使用Jasmine 2.0。间谍的语法发生了很大变化。

您正在寻找的是

var errorArgs = errorCallback.calls.mostRecent().args;

或者,

var errorArgs = errorCallback.calls.argsFor(0);