使用Jasmine和Sinon测试骨干模型 - 对象#<Object>没有方法'spy'

And*_*raD 1 testing backbone.js jasmine sinon

我正在尝试学习如何使用Jasmine和Sinon来测试Backbone应用程序,我正在学习本教程.然而,我遇到了一个我不知道如何解决的问题.

最有可能解决方案很简单,但我需要一些指导......

在我的project.spec.js文件中,这是给出问题的代码:

it("should not save when name is empty", function() {
    var eventSpy = sinon.spy();
    this.project.bind("error", eventSpy);
    this.project.save({"name": ""});
    expect(this.eventSpy.calledOnce).toBeTruthy();
    expect(this.eventSpy.calledWith(
      this.project, 
      "cannot have an empty name"
    )).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)

这是在浏览器中可以看到的特定错误:

Failing 1 spec
7 specs | 1 failing
Project model should not save when name is empty.
TypeError: Object #<Object> has no method 'spy'
TypeError: Object #<Object> has no method 'spy'
    at null.<anonymous> (http://localhost:8888/__spec__/models/project.spec.js:53:26)
    at jasmine.Block.execute (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:1024:15)
    at jasmine.Queue.next_ (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2025:31)
    at jasmine.Queue.start (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:1978:8)
    at jasmine.Spec.execute (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2305:14)
    at jasmine.Queue.next_ (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2025:31)
    at onComplete (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2021:18)
    at jasmine.Suite.finish (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2407:5)
    at null.onComplete (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2451:10)
    at jasmine.Queue.next_ (http://localhost:8888/__JASMINE_ROOT__/jasmine.js:2035:14)
Run Code Online (Sandbox Code Playgroud)

除了sinon.js库之外,我还安装了jasmine-sinon.js库(两者都在vendor/assets/javascripts文件夹中,并包含在application.js文件中).

谢谢你,亚历山德拉

Lau*_*uri 6

当我从GitHub(没有Sinon文件夹)下载sinon.js文件时,我遇到了这个问题.我从http://sinonjs.org/下载了库来解决问题