2
我是node.js的新手,從事異步框架工作已經有一段時間了。 在程序語言如Python中這樣很容易通過他們擁有的輸入列表和預期產出,然後循環測試:如何在nodejs中重複使用異步調用的測試函數?
tests = {
1: [2, 3],
2: [3, 4],
7: [8, 9],
}
for input, expected_out in tests.items():
out = myfunc(input)
assert(out == expected_out)
我試圖做的NodeJS /摩卡/應類似:
var should = require('should');
function myfunc(x, cb) { var y = x + 1; var z = x + 2; cb([y, z]); };
describe('.mymethod()', function() {
this.timeout(10000);
it('should return the correct output given input', function(done) {
var testCases = {
1: [2, 3],
2: [3, 4],
7: [8, 9],
};
for (input in testCases) {
myfunc(input, function (out) {
var ev = testCases[input];
out.should.equal(ev);
});
}
})
})
這導致:
AssertionError: expected [ '11', '12' ] to be [ 2, 3 ]
+ expected - actual
[
+ 2
+ 3
- "11"
- "12"
]
我不知道在哪裏[ '11', '12']從何而來,但也有點線程安全問題。
任何人都可以向我解釋這些意外的價值來自哪裏?
對於你的情況(比較數組)使用.eql而不是.equal(它只是===裏面)。但是.eql做了深入的比較。 –