2
我們有以下工作測試例如:爲什麼拋出異常的函數沒有通過function_name.should.throw(error)?
"use strict";
var should = require("chai").should();
var multiply = function(x, y) {
if (typeof x !== "number" || typeof y !== "number") {
throw new Error("x or y is not a number.");
}
else return x * y;
};
describe("Multiply", function() {
it("should multiply properly when passed numbers", function() {
multiply(2, 4).should.equal(8);
});
it("should throw when not passed numbers", function() {
(function() {
multiply(2, "4");
}).should.throw(Error);
});
});
有一個關於爲什麼第二次測試需要。如果你運行它像
it("should throw when not passed numbers", function() {
multiply(2, "4").should.throw(Error);
});
要與黑客
(function() {
multiply(2, "4");
}).should.throw(Error);
運行沒有解釋
測試失敗
Multiply
✓ should multiply properly when passed numbers
1) should throw when not passed numbers
但在運行功能作爲常規節點腳本執行失敗:
Error: x or y is not a number.
at multiply (/path/test/test.js:7:11)
所以我不明白爲什麼should
不拿起它拋出錯誤的事實。
什麼原因需要用匿名function() { }
調用來包裝?它是否對測試異步運行,或範圍或什麼?謝謝