我是JavaScript测试框架的新手。我想做一些优化,但我遇到了一些问题。这个项目正在使用should.js
下面是我最初测试用例的简化版本:
describe('Simple', function() {
describe('Test', function() {
it('should do something', function(done) {
somePromise.then(function(data) {
data.should.above(100);
done();
});
}
it('should do something else but alike', function(done) {
somePromise.then(function(data) {
data.should.above(100);
done();
});
}
}
});我试着这样做:
var testFunc = function(data) {
it('should do something', function(done) {
data.should.above(100);
done();
});
}
describe('Simple', function() {
describe('Test', function() {
somePromise.then(function(data) {
testFunc(data);
});
somePromise.then(function(data) {
testFunc(data);
});
}
});这个承诺是异步的,也许这就是我的“优化”失败的原因?我在docs中没有找到describe函数的“完成”回调。
提前感谢!任何帮助都将不胜感激!
发布于 2016-05-24 16:03:57
您的示例不适用于因为Mocha已经完成了测试用例的注册,当您的承诺解决时。
用不同的断言测试相同的承诺
要使用多个断言测试单个承诺,只需在测试开始时创建承诺,然后在it块中使用它,如下所示:
describe('A module', function() {
var promise;
before(function () {
promise = createPromise();
});
it('should do something', function() {
return promise.then(function (value) {
value.should.be.above(100);
});
});
it('should do something else', function() {
return promise.then(function (value) {
value.should.be.below(200);
});
});
});请注意,如果从API调用返回承诺,则调用将只进行一次。结果简单地缓存在对这两个测试用例的承诺中。
这还利用了一个事实,即您可以从测试用例返回承诺。而不是使用已完成的回调。如果承诺被拒绝,或者如果The ()调用中的任何断言失败,那么测试用例就会失败。
用相同的断言测试不同的承诺
假设您希望使用相同的断言测试不同的承诺,您可以将一个函数传递给testFunc,该函数创建要测试的承诺。
var testFunc = function(promiseFactory) {
it('should do something', function(done) {
promiseFactory().then(function(data) {
data.should.above(100);
done();
});
});
}
describe('Simple', function() {
describe('Test', function() {
testFunc(function () { return createSomePromise(); });
testFunc(function () { return createSomeOtherPromise(); });
});
});这是因为Mocha的it函数直接在描述块中运行。然后,在实际运行测试用例时,使用promiseFactory回调创建承诺。
由于您也可以从测试用例返回承诺,所以您可以更改testFunc以返回一个断言,如下所示:
var testFunc = function(promiseFactory) {
it('should do something', function() {
return promiseFactory().should.eventually.be.above(100);
});
}https://stackoverflow.com/questions/37416234
复制相似问题