Osk*_*ura 14 javascript mocha.js node.js requirejs js-amd
我很难将Mocha连接到基于RequireJS的应用程序,可能是你能够想出一些东西:).经过几个小时,我一直在尝试加载AMD模块,只是在console.log中发送了一些模板已经加载的"信息"...没有发生任何事情 - 程序刚刚结束并打印出一些摩卡信息.
var facade = requirejs(['../../public/js/scripts/widgets/widgets/article/main.js'],
function(mod) {
console.log('fired')
});
// run with: $ mocha -u tdd test.js --reporter spec
Run Code Online (Sandbox Code Playgroud)
而且我想出了解决回调问题的想法:
setTimeout((function() {
console.log('fired');
}), 5000);
// run with: $ mocha -u tdd test.js --reporter spec
Run Code Online (Sandbox Code Playgroud)
也没用.所以最后我和两个人一起跑
$ node test.js
Run Code Online (Sandbox Code Playgroud)
最后它奏效了.所以问题是:如何使用回调处理来运行Mocha测试,因为这些对于AMD测试至关重要?
Lou*_*uis 25
你这样做的方式,mocha不会对你的文件做任何事情,因为它没有看到它的测试套件.RequireJS计划调用回调,但是在有机会发生之前,mocha会退出.与您的超时示例相同.
以下为您举个例子.
档案test.js:
'use strict';
var requirejs = require("requirejs");
requirejs.config({
baseUrl: '.',
nodeRequire: require
});
suite('Something', function(){
var foo;
suiteSetup(function (done){
// This saves the module foo for use in tests. You have to use
// the done callback because this is asynchronous.
requirejs(['foo'],
function(mod) {
console.log("fired!");
foo = mod;
done();
});
});
suite('blah', function(){
test('blah', function(){
if (foo.test !== "test")
throw new Error("failed!");
});
});
});
Run Code Online (Sandbox Code Playgroud)
档案foo.js:
define(function () {
return {test: "test"};
});
Run Code Online (Sandbox Code Playgroud)
当你运行:
mocha -u tdd test.js
Run Code Online (Sandbox Code Playgroud)
您将看到回调被触发并且测试通过.
对于读书人这个问题上的利益,通过混淆使用suite,suiteSetup,test...摩卡支持多种接口.代码在这里是使用TDD界面(OP调用摩卡用-u tdd),其中出口suite,suiteSetup,test等.在默认的BDD接口,所述等同物describe,before和it分别.
| 归档时间: |
|
| 查看次数: |
14709 次 |
| 最近记录: |