Mocking BsModalRef для модульного тестирования - PullRequest
0 голосов
/ 09 мая 2018

Я использую BsModalRef для показа мод и отправки данных с использованием свойства content. Итак, у нас есть что-то вроде этого:

this.followerService.getFollowers(this.bsModalRef.content.channelId).subscribe((followers) => {
    this.followerList = followers;
    this.followerList.forEach((follower) => {
      follower.avatarLink = this.setUserImage(follower.userId);
      this.followerEmails.push(follower.email);
    });
  });

Мы устанавливаем идентификатор канала в содержимом bsModalRef (this.bsModalRef.content.channelId). Работает нормально. Сейчас я пишу модульный тест для этого. Проблема в том, что я не могу это высмеять. Я попытался переопределить, шпион и т. Д., Но ничего не работает. Я использую подход, упомянутый в этой ссылке . Одной из альтернатив является использование TestBed, но я не очень осведомлен о его использовании. Может ли кто-нибудь помочь мне найти какой-либо подход, с помощью которого это может быть достигнуто?

1 Ответ

0 голосов
/ 27 февраля 2019

Мне недавно пришлось сделать что-то похожее, и Mocking вызов метода сработал. Сложная часть заключается в внедрении BsModalService как в набор тестов, так и в компонент.

describe('MyFollowerService', () => {
    configureTestSuite(() => {
        TestBed.configureTestingModule({
            imports: [...],
            declarations: [...],
            providers: [...]
        }).compileComponents();
    });

    // inject the service
    beforeEach(() => {    
        bsModalService = getTestBed().get(BsModalService);
    }


    it('test', () => {
       // Mock the method call 
       bsModalService.show = (): BsModalRef => {
           return {hide: null, content: {channelId: 123}, setClass: null};
       };

       // Do the test that calls the modal

    });
});

Пока вы вызываете bsModal следующим образом, этот подход будет работать

let bsModalRef = this.modalService.show(MyChannelModalComponent));

Наконец, вот несколько ссылок, которые более подробно освещают настройку тестов с помощью TestBed.

...