0
RESTful 리소스에 대한 몇 가지 테스트를 작성하는 데 어려움을 겪고 있습니다. 나는 프레임 워크에 익숙하지 않으므로 설명을 적절하게 조정하십시오.주입 된 정수로 angularjs 리소스를 테스트하는 방법
단위 테스트를 위해 각도 모의 + 카르마 - 재스민을 사용하고 있습니다.
angular.module('resources', ['ngResource'])
.factory('Login', function($resource, helpers) {
return $resource(
helpers.getApiUrl() + 'login'
);
})
헬퍼 다른 모듈에 정의 된 상수 :
app = angular.module('app', ['ngRoute', 'filters', 'services', 'resources']).constant('helpers', {
getLanguage : function() { return angular.element('meta[http-equiv]').attr('content'); },
getApiUrl : function() { return '<%= @site.config[:api] %>'.replace(/\%\{lang\}/,this.getLanguage() + '.'); }
}).config(['$routeProvider', '$anchorScrollProvider', 'helpers', config]).run(runner)
그리고 마지막으로, 여기에 문제가 단위 테스트입니다 :
describe("Resources test suite", function() {
var mockHelpers;
beforeEach(function(){
mockHelpers = sinon.stub({ getLanguage: function() {return 'de';}, getApiUrl: function(){ return 'http://testApiUrl/';} });
module('app', function($provide) {
$provide.constant('helpers', mockHelpers);
})
});
beforeEach(module('resources'));
describe('Login resource', function() {
it('should send a post resquest to /login', inject(function(Login, $httpBackend, helpers){
var url = 'http://testApiUrl/login',
data = 'mock data',
headers = {"Accept": "application/json, text/plain, */*", "Content-Type":"application/json;charset=utf-8"},
successCallback = jasmine.createSpy('success'),
errorCallback = jasmine.createSpy('error');
$httpBackend.expectPOST(url, data, headers).respond(200, {token:'Oh yeah!'});
var answer = Login.save(data);
$httpBackend.flush();
expect(answer.token).toBe('Oh yeah!');
expect(errorCallback).not.toHaveBeenCalled();
}))
})
});
테스트 그리고 여기 REST 자원 테스트 개체입니다 실패하고 왜 그럴지 모릅니다.
Chrome 34.0.1847 (Linux) Resources test suite Login resource should send a post resquest to /login FAILED
Error: Unexpected request: POST undefinedlogin
Expected POST http://testApiUrl/login
내가 여기에 붙어 : 모의 getApiUrl 기능 (카르마에서 여기에 콘솔 출력을) 정의되지 않은 것으로 보인다. 누군가가 잘못 될지도 모르는 생각이 있습니까? 나는 어떤 도움을 주셔서 감사하겠습니다.
글쎄, 내가 문제가 보인다대로 sinon 스텁 내가 무엇을 기대하고 있지되었으며, sinon –
확인에 있음을 발견했다. 누군가가 이유를 설명 할 수 있다면, 좋을 것입니다. 이제 테스트가 통과합니다. 모듈은 ('app', function ($ provide) { $를 제공합니다. .constant ('helpers', mockHelpers); }); }); –