以下测试的行为异常:
it('Should return the exchange rates for btc_ltc', function(done) {
var pair = 'btc_ltc';
shapeshift.getRate(pair)
.then(function(data){
expect(data.pair).to.equal(pair);
expect(data.rate).to.have.length(400);
done();
})
.catch(function(err){
//this should really be `.catch` for a failed request, but
//instead it looks like chai is picking this up when a test fails
done(err);
})
});
我应该如何正确处理被拒绝的承诺(并进行测试)?
我应该如何正确处理失败的测试(即:expect(data.rate).to.have.length(400);
?
这是我正在测试的实现:
var requestp = require('request-promise');
var shapeshift = module.exports = {};
var url = 'http://shapeshift.io';
shapeshift.getRate = function(pair){
return requestp({
url: url + '/rate/' + pair,
json: true
});
};
最简单的方法是使用Mocha在最新版本中提供的内置Promise支持:
it('Should return the exchange rates for btc_ltc', function() { // no done
var pair = 'btc_ltc';
// note the return
return shapeshift.getRate(pair).then(function(data){
expect(data.pair).to.equal(pair);
expect(data.rate).to.have.length(400);
});// no catch, it'll figure it out since the promise is rejected
});
或者使用现代Node和async / await:
it('Should return the exchange rates for btc_ltc', async () => { // no done
const pair = 'btc_ltc';
const data = await shapeshift.getRate(pair);
expect(data.pair).to.equal(pair);
expect(data.rate).to.have.length(400);
});
因为这种方法是端到端的承诺,所以它更易于测试,您不必考虑正在考虑的奇怪情况,就像done()
到处都是奇怪的电话一样。
这是Mocha目前与Jasmine等其他库相比所具有的优势。您可能还需要检查Chai As
Promised
,这将使其变得更加容易(否.then
),但就我个人而言,我更喜欢当前版本的清晰度和简洁性
以下测试表现异常: 我应该如何正确处理被拒绝的promise(并测试它)? 如何正确处理失败的测试(即:
问题内容: 我正在尝试使用Mocha来测试构造函数是否引发错误。我无法使用Expect语法执行此操作,因此我想执行以下操作: 这可能吗? 问题答案: 您可以尝试使用Chai的 构造。例如:
问题内容: 我希望能够同时启动我在Mocha中的所有describe语句。有人可以帮我弄清楚该怎么做吗? 问题答案: 您无法直接使用mocha进行此操作,因为它会创建it()回调的列表并按顺序调用它们。 如果您愿意将自己的描述移到单独的.js文件中,mocha- parallel-tests 可以执行此操作。为了说服自己,请将其安装在某个地方,然后用–low缓慢调用它,以便每次都报告: 您将看到它
问题内容: 我正在尝试测试Express.js控制器,但是每隔一段时间我就会碰到mocha超时提示我的问题。 文档(https://mochajs.org/#working-with-promises) 我用Promises包装了Express控制器,以便随后可以在测试中将它们返回。 我有一个基本测试,可以运行以始终得到错误消息: 我得到的错误是: 我不明白为什么会出现错误,因为我正在返回确实解决
我有一个叫MochaTests的目录。在这里,我有一个在摩卡网站“1.2.3摩卡”上找到的示例测试。在命令提示符下(我的操作系统是WIN7),我输入Mocha,结果是。我按照说明进行了安装:,我可以告诉它安装得很好 所以,在
我正在尝试从请求模块测试GET HTTP方法: 下面是我如何测试 部分的: 但是,我没有找到测试catch部分的方法(当它给出错误并且响应状态不是>=400)。 有什么建议吗? 它也将帮助我解决这个问题,一个简单的例子,另一个代码测试一个承诺的catch部分。