所有这些规格即使不应该也能正常运行。请看一下延迟函数给出的荒谬答案。对不起,我试图弄清楚如何更容易地格式化代码但失败了。
测试规范:
describe("delay", function () {
var chai = require("chai");
var expect = chai.expect;
var chaiAsPromised = require("chai-as-promised");
chai.use(chaiAsPromised);
var Calculator = require('C:/BaseCalculators/Calculator');
var delay = require('C:/BaseCalculators/delay');
var calculator;
beforeEach(function () {
calculator = new Calculator();
});
it("returns a promise", function () {
var willAdd = delay( 100, calculator, 'add', [ 1, 1 ] );
expect( willAdd ).to.be.instanceOf( Promise );
expect( willAdd ).to.be.fulfilled;
});
it("delays execution", function () {
expect( delay( 1000, calculator, 'add', [ 10, 5 ] ) ).to.eventually.equal( 150 );
expect( delay( 500, calculator, 'subtract', [ 9, 5 ] ) ).to.eventually.equal( 14 );
});
it("cannot execute functions that do not exist", function () {
expect( delay( 1000, calculator, 'sqrt', [ 2, 2 ] ) ).to.be.rejected;
});
});
Calulator似乎可以正常运行其自己的测试,但如果需要我可以添加更多代码。这是延迟功能,我认为是问题:
delay = function (ms, obj, methodName, params) {
var p = new Promise((resolve, reject) => {
setTimeout(() => {
var data = obj[methodName](...params);
console.log(data);
p.resolve(data);
}, ms);
}
)
return p;
};
module.exports = delay;
答案 0 :(得分:0)
这里的主要问题是我使用的是Jasmine,它显然不适合异步测试。我创建了一个新项目,复制了所有测试和js应用程序文件,并且只安装了mocha,chai和chai-as-promise,然后配置了我的package.json的这一部分,如下所示:
"scripts": {
"test": "./node_modules/.bin/mocha --reporter spec"
之后,运行“npm test”一切都开始像魅力一样。不知道为什么我的问题的负面代表,我可以得到一些回来找到其他人可能会觉得有用的解决方案吗?