Как проверить тело перед отправкой запроса в angular unittest - PullRequest
2 голосов
/ 19 февраля 2020

У меня возникли проблемы с выполнением модульного теста, я прочитал много статей, но ни одна из них не помогла мне, кажется, сложно сделать простой тест.

Мне нужно протестировать эту функцию, она возвращает Observable, на самом деле мне нужно только проверить, правильно ли была построена myBody, я не хочу делать HttpRequest.

public myCoolFunction(params) {
    const myBody= new buildMyBodyModel();
    this.buildMyBody(params, myBody); // private function, will set the values for me
    return this.sendService.send(myBody); // make a htppPostRequest and returns to me a Observeble
}
private buildMyBody(params, myBody){
    myBody.name = params.name;
    myBody.color = params.customColor;
    myBody.count = params.number + 1;
}

Ожидается myBody:

{
    name = 'Jack';
    color = 'Orange';
    count = 4;
}

1 Ответ

1 голос
/ 19 февраля 2020

Надеюсь, это то, что вы ищете: -

it('send method should be called with expected param', () => {
    const sendService = TestBed.get(SendService);
    const params = { name: 'Jack', customColor: 'Orange', number: 3 };
    spyOn(sendService, 'send');
    component.myCoolFunction(params);
    expect(sendService.send).toHaveBeenCalledWith({ name: 'Jack', color: 'Orange', count: 4 });
});

Если вам нужно только проверить, правильно ли собран ваш myBody, попробуйте следующее: -

it('buildMyBody should change myBody according to params', () => {
    const myBody= new buildMyBodyModel();
    const params = { name: 'Jack', customColor: 'Orange', number: 3 };
    (component as any).buildMyBody(params, myBody);
    expect(myBody).toEqual({ name: 'Jack', color: 'Orange', count: 4 });
});
...