【发布时间】:2017-01-10 16:12:42
【问题描述】:
我有两个测试文件。当只存在 test1.js 时,不会运行任何测试,并且 mocha 报告“0 通过”测试。当 test1.js 和 test2.js 存在但都依赖于一个 Promise 时,仍然没有运行测试并且 mocha 仍然报告“0 通过”。但是当其中一个测试被修改为不使用 Promise 时,mocha 会运行这两个测试并且它们都成功了。有没有搞错?这是我的文件:
index.js:
require('./server').then( function(server) {
server.listen(8080, function() {
console.log("Started server");
});
);
server.js:
var express = require('express');
var server = express();
module.exports = new Promise((function(resolve, reject) {
return resolve(server);
}));
test1.spec.js:
require('./server').then(function(server) {
describe('Test Suite #1', function () {
it('should run test #1', function testSomething(done) {
return done();
});
});
});
test2.spec.js(server.js 用作promise,测试不运行):
require('./server').then(function(server) {
describe('Test Suite #2', function () {
it('should run test #2', function testSomethingElse(done) {
return done();
});
});
});
test2.spec.js(server.js 不用作promise,两个测试都运行):
var server = require('./server');
describe('Test Suite #2', function () {
it('should run test #2', function testSomethingElse(done) {
return done();
});
});
要运行它们,我只需安装并运行 nodejs、express 和 mocha:
% mocha "*.spec.*"
我知道我在这些示例中没有使用 server 变量,但当然真正的测试需要返回一个 promise,因为有时 server.js 正在访问远程系统以获取配置数据。我可以解决这个问题,但是对于理解这里发生的事情的任何帮助将不胜感激!
【问题讨论】:
标签: node.js express promise mocha.js