У меня есть насмешливый ресурс, который является просто объектом функций, в данном случае только одним. Эта функция возвращает другую функцию. Код выглядит следующим образом:Шпионаж на функцию, возвращенную другой функцией
var mockRevivhalResource = {
tenantOptions: function tenantOptions() {
return {
post: function post() {
}
}
}
};
var RevivhalResource = mockRevivhalResource;
Я могу следить за tenantOptions() с spyOn(RevivhalResource, 'tenantOptions');
, но я не могу показаться, чтобы шпионить за post()
что tenantOptions()
возвращается.
Единственное, что не вызывает ошибку: spyOn(RevivhalResource.tenantOptions(), 'post');
, но я считаю, что я просто устанавливаю шпиона на новый экземпляр функции post, но когда угловое приложение вызывает RevivhalResource.tenantOptions().post();
, он вызывает новый экземпляр сообщения, потому что если У меня есть console.log("test");
в функции посмеянного сообщения, тесты распечатывают «тест», даже если я не позволяю шпионскому вызову. Но я мог ошибаться по этому поводу.
код контроллера, который звонит ресурс, как это
$scope.fun = function fun() {
RevivhalResource.tenantOptions().post(
{...stuff...},
function success(data) {...success handler...},
function error(data) {...error handler...}
)
};
с RevivhalResource будучи angularjs поставщик, как этот
angular.module('revivhal').provider('RevivhalResource', [function() {
...init stuff...
this.$get = function ($resource) {
...more init stuff...
return {
tenantOptions: function tenantOptions() {
return $resource(...path..., {...data...},
post: {method: "POST"});
}
}
}
}]);
И то, что я пытаюсь сделать, это с помощью шпиона подтвердите, что вызывается RevivhalResource.tenantOptions(). post(). Затем мне нужно заставить шпиона вызвать успешность и обработчики ошибок, чтобы проверить правильность обработчиков.