0

私はAngularJSとテストにかなり慣れていないので、AngularJSで作成したサービスをテストしようとしています。

このようなサービスを設定しました

var serviceModule = angular.module('App.services', []);
serviceModule.factory('subscribeService', function ($http) {
    return {
        getNumberOfSubscribers : function() {
            return $http.get('/jsonFiles/subscribers.json')
                .then(function(subscribers) {
                     return subscribers.length;
                });
        }
    };
});

で、テストはこんな感じ。

describe('Subscribe service test', function() {
var httpBackend,
    subscribeServiceMock, 
    subscribers;

subscribers = [{"email": "test1@mail.com", "subscriptions": "A,B,C"},
               {"email": "test2@mail.com", "subscriptions": "A,C,D"},
               {"email": "test3@mail.com", "subscriptions": "B,C,F"}];

beforeEach(module('App.services'));     

beforeEach(inject(function(subscribeService){
    subscribeServiceMock = subscribeService;
}));

it('Should return total numbers of subsribers', inject(function ($httpBackend) {
    $httpBackend.whenGET('/jsonFiles/subscribers.json').respond(subscribers);
    var numberOfSubscribers = subscribeServiceMock.getNumberOfSubscribers();
    $httpBackend.flush();
    expect(numberOfSubscribers).toEqual(3);

}));

テストは次のエラーで失敗します: "Subscribe service test should return total numbers of subsribers FAILED" " Expected { then : Function } to equal 3 "

どこでこれを間違えたのだろうか?

4

1 に答える 1