如何在Jasmine中测试字符串的值?

时间:2015-07-09 14:28:24

标签: javascript unit-testing jasmine

我有一个用于显示文字的字符串。它最初设置为null,然后在具有状态更新的函数中更新。我想确保在整个函数的生命周期内将字符串设置为正确的状态更新。

Jasmine的间谍似乎专注于测试功能及其相互作用。我特别想测试字符串的历史。假设以下代码:

(function() {
    $this.loggingIn = false;

    $this.submit = function () {
        $this.loggingIn = "Requesting access...";
        $this.errorMessage = "";
        var aThing = {};
        var aSecondaryThing = {};

        $http.post(aThing)
            .success(function (data, status, headers, config) {

                $this.loggingIn = "Validating credentials...";

                $http.post(aSecondaryThing)
                    .success(function (data, status, headers, config) {
                        $this.loggingIn = "Done!";
                    })
                    .error(function (data, status, headers, config) {
                        $this.errorMessage = data.error_description || "Invalid username or password.";
                        $this.loggingIn = false;
                    });
            })
            .error(function (data, status, headers, config) {
                $this.errorMessage = data.error_description || "Invalid username or password.";
                $this.loggingIn = false;
            });

            return false;
    };
})();

此功能从我们原始的Angular代码中删除。除了用于使控制器工作和后期操作的布线之外,没有任何东西丢失。

有没有办法测试loggingIn是否设置为"Validating credentials..."然后"Done!" 而没有编写setter函数来处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

最终我们使用了setter函数来处理字符串管理和测试。虽然不需要测试字符串实际所说的内容,但当时需要进行足够的验证才能进行验证。这样我们就可以验证函数是否被调用,然后验证函数是否正确地更改了字符串,这在任何情况下都是正确的测试。