Я тестирую устройство с угловым контроллером, который использует фабрику Rails Resource для обработки данных модели GET и POSTing от и до приложения Rails. POSTing выполняется с помощью метода на модели, например. (С моделью $scope.resource
):Состояние испытания объекта Jasmine по методу Ajax spy call
$scope.resource.update().then(successHandler, failureHandler);
У меня есть шпион по этому методу, чтобы погасить окурок Аякс вызовов, так что я могу модульное тестирование контроллер:
resUpdateSpy = spyOn($scope.resource, 'update').and.callFake(function() {
return {then: function(success, failure){ success(resUpdateResponse); }};
});
В одном из моих методов контроллера, я ожидайте, что ресурс будет POSTED с определенными данными (в частности, данные Stripe). Данные будут переопределены после POST в том же методе, поэтому я не смогу проверить состояние модели после этого. В идеале я хотел бы что-то вроде:
expect($scope.resource.update).toHaveBeenCalled().whileValueOf($scope.resource.stripeKey).isEqualTo('tok123');
Очевидно, что этот метод не существует в ванильном жасмине. Есть ли способ в Жасмин (или ваниль или через сторонний проект) проверить состояние значения при вызове данного шпиона? или есть ли другой способ проверить эту ситуацию - в частности, состояние модели до ее POST-данных - что мне не хватает?
Я запускаю Jasmine 2.2.0 с Teaspoon 1.0.2 на Угловом 1.3.14 приложении.
Просто поясните: хотите ли вы проверить состояние модели еще до того, как вы ее опубликуете (прежде чем вы вызовете '$ scope.resource.update()') ** или **, когда ответ от POST пришел, и вы хотите проверить его, прежде чем он будет изменен в обработчике 'then()'? –
@MichaelRadionov Я хочу проверить состояние модели перед POST. Поскольку это единичный тест, я завершаю ответ, поэтому нет смысла тестировать его. – eirikir