如果使用 Jasmine 1.3.1,我使用
describe("TryTry", function() {
var i;
function checkForSituation(a) {
// say, if this is made into a function because
// there are a lot of processing
console.log("THERE", a);
expect(foo(3, a)).toEqual( 3 + a );
}
for (i = 0; i < 5; i++) {
console.log("HERE", i);
it("should add for " + i, function() {
checkForSituation(i);
});
}
});
而 foo 只是:
function foo(a, b) {
return a + b;
}
我希望它检查 0 到 4,然后打印出来
HERE 0
THERE 0
HERE 1
THERE 1
...
但相反,它只是在 Chrome 的控制台中打印为:HERE 0, HERE 1, ...
然后THERE 5
五次。有人知道为什么expect
不能将 an 放在这样的外部函数中,如果我需要在函数中放入许多步骤,在 Jasmine 中该怎么做?
附带说明一下,有时在 JavaScript 中,我觉得开发了一种全新的语言,而您通常可以做的事情却行不通——并且想知道可以做些什么来防止这种事情发生,而不知道它的发生会发生。
如果您想尝试一下,它位于https://github.com/jianlin/jasmine-looping-an-it-calling-function-that-does-expect