0

我正在尝试使用 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?
4

1 回答 1

0

他不认为getScore函数因为你在Quiz()里面,你可以用参数或者全局变量来解决,也可以返回Quiz函数()+1分,或者在一个var中声明参数传递,或者喂一个全球分数

于 2013-11-05T19:41:23.787 回答