【发布时间】:2019-06-17 09:02:12
【问题描述】:
一直在尝试解决这个编码挑战,但我碰壁了。它要么在我的头上,要么我只是错过了一些明显的东西。以下是我目前获得的代码以及我正在尝试创建要满足的功能的 mocha 测试。
// 设置 Mocha 和 Chai
mocha.setup( "bdd" );
var expect = chai.expect;
class Calculator {
add(x, y) {
return x + y;
}
subtract(x, y) {
return x - y;
}
multiply(x, y) {
return x * y;
}
divide(x, y) {
if(y === 0) {
return NaN;
} else {
return x / y
}
}
calculate(...args) {
var result = 0;
return new Promise(function(resolve, reject){
setTimeout(function() {
if(result === NaN) {
reject();
} else {
resolve();
}
}, 1000);
});
}
}
/** * 4.在Calculator中添加符合此规范的计算函数 */
describe( "Calculator.calculate", function(){
var calculator;
beforeEach( function(){
calculator = new Calculator();
} );
it( "returns a promise", function(){
var calculating = calculator.calculate( function(){} );
expect( calculating ).to.be.instanceOf( Promise );
} );
it( "resolves when the calculation succeeds", function( done ){
var calculating = calculator.calculate( function(){
expect( this ).to.equal( calculator );
var result = 0;
result += this.add( 1, 2 );
result += this.add( 3, 4 );
return result;
} );
calculating.then( function( result ){
expect( result ).to.equal( 10 );
done();
} );
} );
it( "rejects when the calculation fails", function( done ){
var calculating = calculator.calculate();
calculating.catch( function( result ){
expect( result ).to.be.NaN;
done();
} );
} );
} );
// 运行测试
mocha.run();
Calculator 类用于不同的测试。我在使用计算功能时遇到问题,并让它通过底部的测试。有什么想法或见解?
** 这是我得到的错误——错误:超过 2000 毫秒的超时。对于异步测试和钩子,确保调用了“done()”;如果返回一个 Promise,请确保它已解决。https://cdnjs.cloudflare.com/ajax/libs/mocha/4.0.1/mocha.min.js:1:38622
谢谢!
【问题讨论】:
-
resolve();
标签: javascript asynchronous mocha.js