4

バックエンド サーバーなしでアプリを操作できるように、モック 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 );
        })

    });
});

});

4

1 に答える 1