1
我正在研究Gulp插件,允許使用用英語以外的語言編寫的保留字編寫JavaScript代碼 - 它的主要做法是翻譯,但它不是我所關心的。摩卡咖啡單元測試和斷言`for`loop
與摩卡和Should.js編寫單元測試我發現我不能使用for
循環這樣的:
describe('Proper translating JavaScript PL into JavaScript', function() {
var asserts = [
{
passed: '(tak || nie) && (prawda || fałsz)',
expected: '(true || false) && (true || false)'
},
{
passed: 'jeśli (tak) { jeżeli (prawda) {}}',
expected: 'if (true) { if (true) {}}'
},
{
passed: 'przez (zm i = 1; i <= 3; console.log(i++));',
expected: 'for (var i = 1; i <= 3; console.log(i++));'
},
{
passed: 'zm sum = funkcja (a, b) { zwróć a + b; };',
expected: 'var sum = function (a, b) { return a + b; };'
},
{
passed: 'generator snowball() { zm a = 1; dostarcz a++; }',
expected: 'function* snowball() { var a = 1; yield a++; }'
},
{
passed: 'lol',
expected: 'zap'
}
];
for (var i = 0, l = asserts.length; i < l; i++) {
var assert = asserts[i];
var desc = 'should turn `' + assert.passed + '` into `' + assert.expected + '`';
it(desc, function (done) {
tester(assert.passed, assert.expected, done);
});
}
});
當我做這樣的事情上面,一個錯誤表述爲failing
之多倍數量的斷言。
正如你看到的,我們得到了6次失敗雖然有正確2.此外,其中只有一個是這裏提到。
我不想翻番描述類似下面的語句:
describe('Proper translating JavaScript PL into JavaScript', function() {
var asserts = [
{
passed: '(tak || nie) && (prawda || fałsz)',
expected: '(true || false) && (true || false)'
},
{
passed: 'jeśli (tak) { jeżeli (prawda) {}}',
expected: 'if (true) { if (true) {}}'
},
{
passed: 'przez (zm i = 1; i <= 3; console.log(i++));',
expected: 'for (var i = 1; i <= 3; console.log(i++));'
},
{
passed: 'zm sum = funkcja (a, b) { zwróć a + b; };',
expected: 'var sum = function (a, b) { return a + b; };'
},
{
passed: 'generator snowball() { zm a = 1; dostarcz a++; }',
expected: 'function* snowball() { var a = 1; yield a++; }'
},
{
passed: 'lol',
expected: 'zap'
}
];
it('should be kicking 1', function (done) {
tester(asserts[0].passed, asserts[0].expected, done);
});
it('should be kicking 2', function (done) {
tester(asserts[1].passed, asserts[1].expected, done);
});
it('should be kicking 3', function (done) {
tester(asserts[2].passed, asserts[2].expected, done);
});
it('should be kicking 4', function (done) {
tester(asserts[3].passed, asserts[3].expected, done);
});
it('should be kicking 5', function (done) {
tester(asserts[4].passed, asserts[4].expected, done);
});
it('should be kicking 6', function (done) {
tester(asserts[5].passed, asserts[5].expected, done);
});
});
這些should be kicking N
並不重要 - 我去過懶得寫東西,如:
it('should turn `(tak || nie) && (prawda || fałsz)` into `(true || false) && (true || false)`', function (done) {
tester('(tak || nie) && (prawda || fałsz)', '(true || false) && (true || false)', done);
});
無論如何,做獨立斷言測試就OK了。
第5次測試在這兩種情況下取得成功,我們不看他們都在這裏。 我們關注的測試是這6個放在asserts
。
做分離測試it()
事情正確。 在for
循環中做測試,一次失敗使得asserts.length
失敗,另外一次失敗使其他未見。
Thx,IIFE碰到了現場。 forEach沒有比這更好的了,就像'for' –
forEach在我的例子中所做的那樣,如果你將代碼改回for循環,它就不能同時滿足兩個規範。但很高興你的工作! – Lee
是的,對於與IIFE一起使用的每個作品:) –