在下面的示例中,我想模拟dataService。问题是我需要在函数(数据)下返回数据后测试功能。
由于逻辑依赖于返回的数据。我认为嘲笑/窥探dataservice
可能无助于此。
请提供可能的解决方案。
var app = angular.module('app', []);
app.controller('Controller', ['$scope', '$location', 'dataService', '$window', 'OtherService', 'Config', function ($scope, $location, dataService, $window, SomeService, Config) {
$scope.btnClick = function () {
var SomeNumber = $scope.enteredNumber;
if (SomeNumber == "xyz") {
$scope.errorType = 'errorRequired';
}
else {
dataService.validate_enteredNumber(SomeNumber, function (data) {
if (data != null) {
if (data.responsetype == 1) {
$scope.errortype = data.responsemessage;
}
else {
dataservice.getdetailsforenterednumber(data.responsemessage, function (getdata) {
if (getdata.responsetype == 1) {
$scope.errortype = getdata.responsemessage;
}
else if (getdata.responsetype == 2) {
if (getdata.responsemessage.touppercase() == "consumer")
$window.location.href = "url";
}
else
$location.path('/Somelist').search({ SomeNumber: getdata.responsemessage });
});
}
}
});
}
}
if ($location.search().SomeNumber != null) {
$scope.enteredNumber = $location.search().SomeNumber;
$scope.btnClick();
}
} ]);
答案 0 :(得分:0)
我不完全确定你追求的是什么。假设您只想在调用validate_enteredNumber
函数后测试功能,您仍然可以监视该函数并提供模拟结果。
spyOn(data_service, 'validate_enteredNumber').andReturn(mockObjectYouCreate);