Javascript 如何测试字符串';茉莉花的价值观?

Javascript 如何测试字符串';茉莉花的价值观?,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我有一个用于显示文本的字符串。它最初设置为null,然后通过状态更新在整个函数中更新。我想确保在函数的整个生命周期内,字符串被设置为正确的状态更新 Jasmine的间谍似乎专注于测试功能及其交互。我特别想测试字符串的历史记录。假设以下代码: (function() { $this.loggingIn = false; $this.submit = function () { $this.loggingIn = "Requesting access...";

我有一个用于显示文本的字符串。它最初设置为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;
    };
})();
这个函数是从我们原来的角度代码中删去的。除了使控制器工作的接线和post操作之外,没有遗漏任何东西


有没有一种方法可以测试
logginging
是否设置为
“验证凭据…”
,然后
“完成!”
,而无需编写setter函数来处理它?

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

Hm。这是一个有趣的问题。我不认为Jasmine有办法监视getter并在JavaScript.Related中设置属性,但不重复:我看到了那个,想确定它是否是我通常寻找的,然后意识到他们在谈论一个对象。接近!另一个相关问题:。我认为它不是重复的,因为您希望验证AJAX生命周期中控制器的行为。也许您可以使用Angular提供的模拟
$http
对象,让它返回存根承诺。然后您的单元测试可以断言
loggingIn
是一个值,然后调用
success
方法并做出另一个断言?