我正在努力攀登使用require.js / mocha / chai / sinon和骨干应用的学习曲线。当我运行this test时:
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'
on the line where helloSpy is defined。为什么?请注意,第一次测试通过。
这是完整的项目:
https://github.com/ErikEvenson/spa-testing-study/tree/bcc5b71b3b6f8b24f7e8d01673b50682498ee1b2
注意使用该特定提交。
答案 0 :(得分:7)
这里的问题证明,sinon的bower存储库不可用,因为每this issue。必须首先构建Sinon并且正在执行bower install sinon
只会将Sinon.JS repo拉下来。使用bower install sinonjs
代替bower install sinon
可以使用,但会提供较早的版本号。
答案 1 :(得分:4)
来自@Erik链接。
install --save-dev sinonjs-built
这将让你构建sinon版本。
另一个凉亭版本(如上所述@Erik建议)可在https://github.com/blittle/sinon.js
中找到可以通过安装它
install --save-dev sinonjs
来自sinon github
:
重要:AMD需要预先构建的版本 Sinon.JS作为源代码并不适用于AMD加载器(当它们异步时,例如通过浏览器中的脚本标签加载)。为此,您将不得不使用预先构建的版本。您可以自己构建它,也可以从http://sinonjs.org获取编号版本。
您可以编辑bower.json
文件。而不是写版本只是为url
传递file
即
[...]
"devDependencies": {
"chai": "~1.10.0",
"sinon": "http://sinonjs.org/releases/sinon-1.12.2.js#*",
},
[...]