У меня возникли проблемы с созданием теста жасмина поверх фабрики издевательства.
The (рабочий) Сценарий:
Контроллер:
.controller("remoteCtrl", function(resourceFactory) {
var vm = this;
vm.animals = resourceFactory.getAll();
});
завод
.factory('resourceFactory', function ($resource) {
var demoResource = $resource('/demo-1.0/webresources/animal/:id', {id: '@id'}, {
getAll: {method: 'GET', isArray: true},
getFirst: {method: 'GET', params: {id: 0}, isArray: false},
save: {method: 'POST', params: {id: null}}
});
return demoResource;
});
MockModule для Backendless развития:
angular.module('playAngular.mock', ['ngMockE2E'])
.run(function ($httpBackend, $log) {
var animals = [
{name: 'Animal1', age: '100', id: 0},
{name: 'Animal2', age: '100', id: 1},
{name: 'Animal3', age: '100', id: 2},
{name: 'Animal4', age: '100', id: 3}
];
$httpBackend.whenGET('/demo-1.0/webresources/animal').respond(function() {
return [200, animals];
});
//....
Это работает отлично все вместе. Но теперь проблема. Я хочу, чтобы проверить мой контроллер с Jasmin:
describe("Test Suite für RemoteController", function() {
beforeEach(module('ngResource'));
beforeEach(module('ngMockE2E'));
beforeEach(module('playAngular.mock'));
beforeEach(module('playAngular.remote'));
var $controller;
var $scope;
var $rootScope;
beforeEach(inject(function (_$controller_, _$rootScope_) {
$controller = _$controller_;
$rootScope = _$rootScope_;
}));
var controller;
beforeEach(function() {
controller = $controller('remoteCtrl', {$scope: $scope});
});
describe("Basic Remote Test", function() {
it('Test It:', function() {
expect(controller).toBeDefined();
expect(controller.animals).toBe(4);
});
});
});
тест потерпит неудачу:
Ожидаемое [$ обещание: обещание ({$$ состояние: Object ({состояние : 0})}), $ resolved: false] должно быть 4.
Я понимаю ошибку, у нас есть неразрешенное обещание здесь, но как я могу заставить его работать, чтобы ждать и протестировать ответ в тесте жасмина? Это одна:
controller.animals.$promise.then(function(result){
expect(result.length).toBe(4);
});
не будет работать, а также (жасмин не ждать ответа и просто возвращается с «все в порядке»
Стараюсь все подсказки, которые я нашел в Интернете:. Триггер дайджест цикл промывки httpbackend, но ничего не получалось Видит ли кто-нибудь проблему