Тестирование пользовательского метода для $ state.go

0

Я попытался проверить этот код:

redireccion() {
this.$state.go('modifyLine', {lineId: this.look()._id});
}

look() {
return Entries.findOne({name: this.entry.name});
}

код выше метода в порядке (смотрите), но для 'redireccion' я попробовал что-то вроде этого, и я получил ошибку.

это код:

    describe('redireccion()', () => {
      beforeEach( inject(($state) => {
      spyOn($state, 'go');
      spyOn(controller, 'look');
      spyOn(Entries, 'findOne');
      }));

    it('should be a ... bla bla', () => {
    controller.redireccion();
    expect($state.go).toHaveBeenCalledWith('modifyLine', {lineId: });
    });
   });

Это выдержка, потому что я действительно не знаю, как это проверить.

Теги:
meteor
jasmine
angular-mock

1 ответ

1
Лучший ответ

Я постараюсь дать вам представление. Вы должны попытаться изолировать ваши тесты... Это означает, что если вы проверяете свое перенаправление, вы можете высмеять метод look, поскольку он не имеет значения (для этого конкретного теста).

 describe('testing redirection()', () => {
       beforeEach( inject(($state) => {
            //here I'm saying that I'm spying every call to $state.go
            spyOn($state, 'go');

            //And here I'm that I'm not only spying every call to 
            //controller.look() but I'm also replacing the original
            //implementation with my fake one. Every call will basically 
            //return an object with id equals 10
            spyOn(controller, 'look').and.callFake(() => {
                 var mockedLine = {
                     _id: 10
                 };
                 return mockedLine;
            });
       }));

       it('should call state.go', () => {
            controller.redireccion();

            //if you just want to check if the method was called, do the following:
            expect($state.go).toHaveBeenCalled();

            //if you need to also check the arguments, try:
            var args = $state.go.mostRecentCall.args;
            expect(args[0]).toBe('modifyLine');
            expect(args[1].lineId).toBe(10);
       });
  });
  • 0
    Спасибо! что решит мою проблему;)
  • 0
    Пожалуйста :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню