0

我试过这个解决方案,效果不好。

这是上面链接中的示例代码:

require([
    "doh/runner",
    "http://sinonjs.org/releases/sinon-1.17.5.js"
], function(doh){
    console.log(sinon);
});

错误信息:

$ node ../../dojo/dojo.js load=doh test=tests/test_sinon_spy.js
Error: ENOENT: no such file or directory, open 'http://sinonjs.org/releases/sinon-1.17.5.js'

除此之外,我还尝试直接要求 sinon.js。

sinon-1.17.5.js已移至与doh相同的目录,runner.js并重命名为sinon。(目录)

require([
    "doh/runner",
    "doh/sinon"
], function(doh, sinon){
    console.log(sinon);
});

没有错误信息,但是 sinon 是未定义的:

$ node ../../dojo/dojo.js load=doh test=tests/test_sinon_spy.js
undefined
0 'tests to run in' 0 'groups'
------------------------------------------------------------
| TEST SUMMARY:
------------------------------------------------------------
         0 tests in 0 groups
         0 errors
         0 failures

我很确定第二个代码可以很好地加载 sinon。我通过直接修改验证了这一点sinon.js。但我不知道为什么诗乃不能打电话。


版本

node.js - v6.2.2
dojo/doh - 1.10.0
sinon - 1.17.5
4

1 回答 1

0

[更新]

因为两者node.jsdojo需要API,但它们是不同的。这种情况不起作用,因为它应该使用 node.js 的 APIsinon.js而不是 dojo 的 API。

Dojo 提供了dojo/node模块,它会直接调用 node.js 模块。

1、在dojo同目录下通过npm安装sinon

$ cd ../../dojo
$ npm install sinon

2.修改代码使用dojo/node

# test_sinon_spy.js
require([
    "doh/runner",
    "dojo/node!sinon"
], function(doh, sinon){
    console.log(sinon);
})

3.回到原来的文件夹并运行测试

$ cd -
$ node ../../dojo/dojo.js load=doh test=tests/test_sinon_spy.js

注意,在dojo目录下,会包含npm_module/sinon

于 2016-08-08T10:15:03.667 回答