5

我正在尝试将 require.js/mocha/chai/sinon 与骨干应用程序一起使用来攀登学习曲线。当我运行这个测试时:

define([
    "chai",
    "sinon"
], function(chai, sinon){
    var expect = chai.expect;

    describe("Trying out the test libraries", function(){
        describe("Chai", function(){
            it("should be equal using 'expect'", function(){
                expect(hello()).to.equal("Hello World");
            });
        });

        describe("Sinon.JS", function(){
            it("should report spy called", function(){
                var helloSpy = sinon.spy(window, "hello");

                expect(helloSpy.called).to.be.false;
                hello();
                expect(helloSpy.called).to.be.true;
                hello.restore();
            });
        });
    });
});

我得到TypeError: Object #<Object> has no method 'spy' 了定义 helloSpy 的那一行。为什么?请注意,第一个测试通过。

这是完整的项目:

https://github.com/ErikEvenson/spa-testing-study/tree/bcc5b71b3b6f8b24f7e8d01673b50682498ee1b2

注意使用那个特定的提交。

4

2 回答 2

7

这里的问题是 sinon 的 bower 存储库无法使用,就像这个问题一样。必须先构建 Sinon,这样做bower install sinon只会拉下 Sinon.JS 存储库。使用bower install sinonjs而不是bower install sinon有效,但会提供较早的版本号。

于 2013-08-23T03:57:39.540 回答
4

来自@Erik 链接。

install --save-dev sinonjs-built

这将为您提供 sinon 的构建版本。

编辑

可以在https://github.com/blittle/sinon.js中找到另一个凉亭版本(如上面@Erik 建议的那样)

可以通过安装它 install --save-dev sinonjs

编辑 2

来自sinon github

重要提示:AMD 需要预构建版本的 Sinon.JS,因为源代码不适用于 AMD 加载器(当它们是异步的,例如通过浏览器中的脚本标签加载时)。为此,您将不得不使用预构建的版本。您可以自己构建它,也可以从http://sinonjs.org获取编号版本。

解决方法:告诉bower sinon文件的直接链接

您可以编辑该bower.json文件。而不是编写版本,只需urlfileie传递一个

[...]
"devDependencies": {
     "chai": "~1.10.0",
    "sinon": "http://sinonjs.org/releases/sinon-1.12.2.js#*",
 },
[...]
于 2014-03-25T08:44:01.000 回答