我正在尝试使用 Jasmine 测试一个简单的 JavaScript 类,但我无法确定测试失败的原因。
// Define the class to be tested
function Quiz() {
// private variables
var score = 1;
function getScore() {
return score;
}
// public methods
return {
getScore: getScore
};
}
在运行测试之前验证是否可以调用 getScore 方法。
// Get the score outside of the Jasmine test
var myQuiz = new Quiz();
var myScore = myQuiz.getScore();
console.log("myScore = ", myScore);
现在尝试运行测试
describe("A Quiz", function() {
it("should have a default score of 1", function() {
// Get the score inside of the Jasmine test
var quiz = new Quiz();
console.log("Quiz object: ", quiz);
var score = quiz.getScore();
console.log("score", score);
expect(score).toBe(1);
});
});
这是运行测试的输出。
A Quiz should have a default score of 1.
✘ TypeError: quiz.getScore is not a function in http://localhost:7357/scripts/QuizTest.js (line 26)
@http://localhost:7357/scripts/QuizTest.js:26
myScore = 1
Quiz object: {"score":0}
在我运行测试之前,我验证 getScore 方法是可调用的。输出中的最后一行来自测试前的 console.log 语句。这验证了可以找到 getScore。
但是,如果我尝试在 Jasmine 测试中调用 getScore 方法,则找不到。记录 quiz 对象验证只有 score 变量和方法是可见的。
Why can't Jasmine see the method?