Я новичок в тестировании и попал в следующую ситуацию.Мой компонент имеет метод 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
) {}
}