У меня возникли проблемы с выяснением того, как правильно писать тесты для метода контроллера, который полагается на вызов службы углов и возврат определенного значения, но мне нужно иметь возможность проверьте код в функции .then() после.Возвращаемые значения из разрозненного углового обслуживания и вызова через
Вот основная идея:
// Controller
$scope.myMethod = function() {
methodName.connect().then(
function(returnValue) {
if (returnValue.prop === 1) {
$scope.callMade = true;
$rootScope.$emit('callWasMade');
}
},
function() {
$rootScope.$emit('callWasNotMade');
}
);
};
Так что я хочу, чтобы проверить вызов метода на $ рамки, вызовите methodName.connect() функцию, но я хочу, чтобы дразнить ответ (перезапись ReturnValue), но все же функция работает нормально. Что-то вроде:
// Test
describe('connecting to method', function() {
it('should do nothing when returnValue.prop does not equal 1', function() {
spyOn(methodName, 'connect').and.returnValue({ prop: 2 });
scope.myMethod();
expect(scope.callMade).toBeFalsy();
});
it('should pass when returnValue.prop does equal 1', function() {
spyOn(methodName, 'connect').and.returnValue({ prop: 1 });
scope.myMethod();
expect(scope.callMade).toBeTruthy();
});
});
За исключением этого возвращает
undefined is not a constructor (evaluating 'methodName.connect().then') (...)
Как я могу контролировать выход из methodName.connect таким образом?
Спасибо.
Поскольку 'methodName' не прилагается на сферу, вы можете создать шпиона, как' spyOn (имяМетода, 'Connect') '. Ваша проблема заключается в том, что ваши коды не разделяют проблемы. Так что трудно проверить. – Qianyue
Так что я должен приложить методName к области? В этом примере methodName предназначен для представления службы. – AMcI