ngMock
AngularJS模块中的expect
和when
有什么区别?
它们都提供响应,那么什么时候会使用一个而不是另一个呢?
我在 angularJS.com 阅读了文档,但我不是很清楚。
这是我想要使用 Jasmine 测试的服务,所以我应该期望调用端点,还是应该依靠返回的已知值?
(function () {
'use strict';
var app = angular.module('cs');
app.service('PlateCheckService', ['$http', function ($http) {
return {
checkPlate: function (plateNumber) {
return $http.post('PlateCheck/Index', {
plateNumber: plateNumber
}).then(function (response) {
return {
message: response.data.VehicleAtl === null ? 'Clean' : 'Hot',
alertClass: response.data.VehicleAtl === null ? 'alert-success' : 'alert-danger'
};
});
}
};
}]);
}());
文档中的解释对我来说非常清楚:
请求期望与后端定义
请求期望提供了一种对应用程序发出的请求进行断言并定义对这些请求的响应的方法。如果未发出预期的请求或以错误的顺序发出请求,则测试将失败。
后端定义允许您为应用程序定义一个假后端,该后端不会断言是否发出了特定请求,它只是在发出请求时返回经过训练的响应。无论在测试期间是否发出请求,测试都将通过。
因此,如果您使用 when()
,您可以按任何顺序执行任何请求,并且测试不会失败。如果使用 expect()
,则如果后端未按与预期请求相同的顺序收到预期的请求,则测试将失败。