[英]Running a repeated mocha test for a function
我是新mocha
,我需要進行100
次測試。 在以下代碼中,測試了regexTest
函數的true
。
var assert = require('assert');
describe('regexTest',function() {
it('should return true if the string starts with a number',function() {
var i = 1;
while(i++ <= 100) {
assert.equal(true,regexTest(Math.random().toString(36).substring(7)));
}
});
})
function regexTest(randStr) {
let match = randStr.match(/^\d+/);
if(match && match.length > 0) {
return true;
}else{
return false;
}
}
我不確定這是否是在while循環內運行重復測試的正確方法。 另外,我對結果表示懷疑,因為無論如何,它始終會返回通過單個測試的結果。
在這里有什么更好的方法?
因此,首先,您的代碼似乎正確,並且在本地運行它會返回:
~/P/test ➤ node_modules/.bin/mocha x.js
regexTest
1) should return true if the string starts with a number
0 passing (10ms)
1 failing
據我所知,沒有官方的方法可以重復斷言語句,因此在循環中運行它應該很好。
您可能要考慮在您的assert語句中添加更詳細的失敗消息,例如:
while(i++ <= 100) {
let testStr = Math.random().toString(36).substring(7);
assert.equal(true, regexTest(testStr), 'Test failed on ' + testStr);
}
(以防萬一, if
您regexTest
在regexTest
函數中使用if
塊,只需return match && match.length
)
如果在循環的每次執行中都聲明,則測試將在第一個聲明錯誤時結束。 如果要查看測試失敗100次的次數,可以將測試結果存儲在數組中,可以執行以下操作:
var assert = require('assert');
describe('regexTest',function() {
it('should return true if the string starts with a number',function() {
var i = 1;
var errorsArray = [];
while(i++ <= 100) {
var randomNumber = Math.random();
if(!randomNumber.toString(36).substring(7)){
errorsArray.push(randomNumber);
}
}
assert.equal(0, errorsArray.length, errorsArray);
});
})
您的代碼存在的問題是,您實際上僅在測試生成的最后一個隨機字符串。
另外,如@Geotob所述 ,如果打印測試用例失敗的字符串,效果會更好。
您可以將其框架如下:
var assert = require('assert');
function makeTest() {
describe('regexTest', function () {
var i = 0;
while (i++ <= 20) {
it('should return true if the string starts with a number', function () {
var i = 0;
let str = Math.random().toString(36).substring(7);
let output = regexTest(str);
assert.equal(true, output, `Failed on ${str}`);
});
}
});
}
function regexTest(randStr) {
let match = randStr.match(/^\d+/);
if (match && match.length > 0) {
return true;
} else {
return false;
}
}
makeTest();
這應該工作正常。
注意事項 :
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.