Угловое тестирование: тестирование метода с аргументом, специфичным для типа - PullRequest
0 голосов
/ 20 сентября 2018

Я новичок в тестировании и попал в следующую ситуацию.Мой компонент имеет метод closeBox(), который принимает аргумент типа Conversation.Conversation - довольно сложная модель (см. Ниже).Если я пытаюсь протестировать этот метод, вызывая его с простым объектом {id: 1, name: 'me'}, он запрашивает, чтобы это был аргумент типа Conversation.

Теперь ябыло интересно: мне действительно нужно подделывать весь объект беседы каждый раз, когда я хочу протестировать метод с параметром конкретного типа?Эта модель разговора - уже боль в заднице, и она даже не такая большая.Конечно, есть лучший способ сделать это.Кто-нибудь?

Это тест, который я пытаюсь выполнить: я проверяю, присутствует ли ложный диалог в свойстве массива openConversations, а затем я вызываю метод closeBox с диалогом в качестве аргумента.как вы можете видеть, это много работы, чтобы создать этот фальшивый разговор.Есть ли лучший способ сделать это?

    it('should close the chatbox', function () {
    const mockConversation = new Conversation(
      [{id: 'jos'}],
      {username: 'jos', profilePicture: {name: 'jos', uploaded: true, userId: '12345'}},
      '123456',
      '123457',
      '9875412');
    component.openConversations = [mockConversation];

    fixture.detectChanges();

    component.closeBox(mockConversation);

    expect(component.openConversations).toBe(null);

  });

Метод компонента: this.openConversations является свойством этого компонента.Это массив бесед

closeBox(openConv: Conversation) {
    const index = this.openConversations.indexOf(openConv);
    if (index > -1) {
      this.openConversations.splice(index, 1);

    }
  }

модель беседы

класс экспорта Беседа {

  constructor(
    public messages: Array<{}>,
    public otherUser: {
      username: string,
      profilePicture: {
        name: string,
        uploaded: boolean,
        userId: string
      }},
    public user1: string,
    public user2: string,
    public _id: string
  ) {}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...