バックエンド サーバーなしでアプリを操作できるように、モック httpbackend 呼び出しを含むモジュールを作成しました。これは開発中にうまく機能しています。
サービスをテストするとき、このモジュールを使用してモック データを提供したいと考えています。テストにどのように挿入しますか?
モックデータのモジュールは次のとおりです。
angular.module('mockData', [ ]).run( function($httpBackend) {
$httpBackend.whenPOST( ( /\/verify-ticket.*/ ) ).respond( function( method, url, data, headers ) {
if ( url == '/verify-ticket?ticket=good' ) {
return[ 200, { verified : true, ticket : 'good' } ]
} else if ( url == '/verify-ticket?ticket=bad' ) {
return[ 200, { verified : false, ticket : 'bad' } ]
} else {
return [ 500 ]
}
});
$httpBackend.whenGET(/\.html$/).passThrough()
} );
そして、ここに私のテストがあります:
describe('service', function() {
var authService;
var rootScope;
beforeEach( function() {
module('services');
inject( function( AuthenticationService ) {
authService = AuthenticationService
});
inject( function( $injector) {
rootScope = $injector.get('$rootScope');
spyOn( rootScope, '$broadcast' );
} )
});
describe('authentication', function(){
it('a good ticket should pass', function() {
var runComplete = false;
runs( function() {
authService.verifyTicket( 'good' );
setTimeout( function() {
runComplete = true;
}, 1000)
});
waitsFor( function() {
return runComplete;
}, 'should be completed', 1200 )
runs( function() {
expect( rootScope.$broadcast ).toHaveBeenCalled();
expect( rootScope.$broadcast ).toHaveBeenCalledWith('verifyTicketResult', true );
})
});
});
});