Это мой первый вопрос здесь. Я постараюсь сделать все возможное. Я искал много до публикацииКак проверить угловую фабрику, которая использует Parse SDK
Я разрабатываю приложение angularJS, опираясь на Javascript ParseSDK. Я убедил себя погрузиться в тестирование в последнее время, поэтому я новичок.
У меня есть эта фабрика UserFactory
, которая обертывает вокруг SDK, поэтому все чистое и модульное Угловое. т.е.: SDK используется только на заводах (а не на контроллерах или директивах).
Это выглядит следующим образом:
myModule.factory('UserFactory', ['$q', function($q){
var User = Parse.User.extend({
// Instance methods
},{
// static/class methods
// Overrides Parse.User.current() to wrap current User in promise
current: function(){
var deferred = $q.defer();
var currentUser = Parse.User.current();
if(currentUser)
deferred.resolve(currentUser);
else
deferred.reject("No current user");
return deferred.promise;
}
});
return User;
}]);
Мой вопрос: Как проверить UserFactory.current()
зная, что использует внешний сервис? Я искал насмешку над Parse SDK, но не знаю, как это сделать, поскольку он не является угловым (т. Е. Не может использовать httpBackend).
Мой текущий файл теста:
describe("Unit: UserFactory", function(){
var UserFactory;
beforeEach(function(){
module("myModule");
inject(function(_UserFactory_){
UserFactory = _UserFactory_;
});
});
it("should return current User", function(){
// What to expect ?
});
});
Спасибо заранее
Что я обычно делаю, в этом случае, насмехается над 'Parse.User.current()', что делает его вернуть значение моего выбора и сравнить это значение после вызова, чтобы убедиться, что он вызвал этот метод (наряду с некоторыми шпионами). – GeoffreyB