1
$ httpBackendを使って嘲笑するとき、返されるデータの型が正確にわからないときに模擬を作成するにはどうしたらよいですか? httpコールがコントローラの初期化になるようにします。 1つの注意点は、jsonオブジェクトが返されることです。
(function() {
'use strict';
angular
.module('app')
.service('dataService', dataService);
function dataService($http) {
this.getMovies = getMovies;
////////////////
function getMovies() {
return $http.get('./src/app/movies/data.json')
.then(function (response) {
return response.data
})
}
};
})();
;
(function() {
'use strict';
angular.module('app')
.controller('moviesController', moviesController);
moviesController.$inject = ['dataService'];
function moviesController(dataService) {
var vm = this
vm.movies;
vm.getMovies = getMovies;
getMovies();
function getMovies() {
return dataService.getMovies()
.then(function (data) {
return vm.movies = data.movies;
});
}
};
}());
;
describe('moviesController', function() {
var $controller,
moviesController,
dataService,
$httpBackend;
beforeEach(angular.mock.module('app'));
beforeEach(angular.mock.module('ui.router'));
beforeEach(inject(function (_$controller_, _dataService_, _$httpBackend_) {
$controller = _$controller_;
dataService = _dataService_;
$httpBackend = _$httpBackend_;
moviesController = $controller('moviesController', { dataService: dataService });
}))
it('should be defined', function() {
expect(moviesController).toBeDefined();
});
it('should initialise with a call to dataService.getMovies()', function() {
var url = "./src/app/movies/data.json";
var movies = {};
$httpBackend.expectGET(url).respond(200, movies);
moviesController.getMovies();
expect(moviesController.movies).toEqual(movies);
$httpBackend.flush();
});
});
;
Expected undefined to equal Object({ }).
私はそれを試みましたが、まだ運がありません。 – user3788267
@ user3788267編集を参照してください。あなたはあなたのexpectGET URLの最後に一重引用符を追加しています。 – dwbartz
愚かな私。私はまだ私は同じエラーが表示されていることを修正しました。 – user3788267