각도 $ 리소스를 사용하여 REST 요청에 대한 몇 가지 기본 테스트를 수행하려고합니다. 서비스 코드는 정상적으로 작동합니다.
'use strict';
angular.module('lelylan.services', ['ngResource']).
factory('Device', ['Settings', '$resource', '$http', function(Settings, $resource, $http) {
var token = 'df39d56eaa83cf94ef546cebdfb31241327e62f8712ddc4fad0297e8de746f62';
$http.defaults.headers.common["Authorization"] = 'Bearer ' + token;
var resource = $resource(
'http://localhost:port/devices/:id',
{ port: ':3001', id: '@id' },
{ update: { method: 'PUT' } }
);
return resource;
}]);
지시어 내에서 Device 리소스를 사용하고 있습니다. 서비스에서 몇 가지 테스트를 시작할 때 문제가 발생했습니다. . 다음은 $ httpBackend를 사용하여 HTTP 요청을 조롱 한 샘플 테스트이며 조롱 된 URL에 요청합니다.
불행히도 요청이 있었지만 아무것도 반환하지 않습니다. 다른 URL에 대한 요청이 있으면 테스트 스위트가 자동으로 오류를 발생시키기 때문에이 에 대해 확신합니다. 저는 많은 시간을 보냈지만 해결책은 없습니다. 여기 테스트 코드.
'use strict';
var $httpBackend;
describe('Services', function() {
beforeEach(module('lelylan'));
beforeEach(inject(function($injector) {
var uri = 'http://localhost:3001/devices/50c61ff1d033a9b610000001';
var device = { name: 'Light', updated_at: '2012-12-20T18:40:19Z' };
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET(uri).respond(device)
}));
describe('Device#get', function() {
it('returns a JSON', inject(function(Device) {
device = Device.get({ id: '50c61ff1d033a9b610000001' });
expect(device.name).toEqual('Light');
}));
});
});
장치가로드되지 않았으므로 오류입니다.
Expected undefined to equal 'Light'.
Error: Expected undefined to equal 'Light'.
나는 다음과 같은 솔루션을 사용하여도 시도했다, 그러나 기대를 확인하는 기능 으로하지 않습니다.
it('returns a JSON', inject(function(Device) {
device = Device.get({ id: '50c61ff1d033a9b610000001' }, function() {
expect(device.name).toEqual('Light');
});
}));
이 문제를 해결하기위한 제안이나 링크는 정말 감사하겠습니다. 고마워요.
고마워요. 나는 그것으로 몇 가지 시험을하고 있었다. #flush 부분이 완전히 사라졌습니다. 또한 정말 멋진 라이브 예제에 대해 감사드립니다. 그것을 사랑해. –