我有一个用于显示文字的字符串。它最初设置为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>
答案 0 :(得分:0)
最终我们使用了setter函数来处理字符串管理和测试。虽然不需要测试字符串实际所说的内容,但当时需要进行足够的验证才能进行验证。这样我们就可以验证函数是否被调用,然后验证函数是否正确地更改了字符串,这在任何情况下都是正确的测试。