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一起使用的每个作品:) –