Как покрыть все строки функции жасминовой кармой

Как я могу покрыть все строки функции ниже, используя жасмин?

   addUser(): void {
    if (this.validateNewUser()) {

        this.newUser._Job = this.selectedJob;
        this.newUser.PositionId = this.selectedJob.Id;
        this.newUser.Position = this.selectedJob.Value;

        this.newUser._Area = this.selectedArea;
        this.newUser.AreaId = this.selectedArea.Id;
        this.newUser.Area = this.selectedArea.Value;

        this.users.push(this.newUser);
        this.clear();
        this.toastService.open('Usuário incluído com sucesso!', { type: 'success', close: true });
    }
}

В настоящее время я пытаюсь сделать следующее, но ни одна строка не считается покрытой:

    it('Given_addUser_When_UserStepIsCalled_Then_ExpectToBeCalled', (done) => {
        component.addUser = jasmine.createSpy();           
        component.addUser();
        expect(component.addUser).toHaveBeenCalled();
        done();
    });

ОТРЕДАКТИРОВАНО

Сейчас: Изображение здесь


person Guilherme Prado    schedule 11.12.2019    source источник


Ответы (1)


Нет необходимости проверять, был ли вызван тестируемый метод (addUser), если вы вызываете его явно. Однако вы должны проверить, сделал ли метод то, что должен был делать. Возможно, вы захотите узнать, отображается ли тост. Следовательно, вы можете переписать тест следующим образом.

it('#addUser should display toast', () => {

    // given
    spyOn(toastService, 'open');

    // when
    component.addUser();

    // then
    expect(toastService.open).toHaveBeenCalled();
});
person uminder    schedule 11.12.2019
comment
Круто, на некоторых линиях заработало, но не на всех, так как смог охватить все, прислал фото как это было в вопросе - person Guilherme Prado; 11.12.2019
comment
Судя по всему, this.validateNewUser() возвращает false, вам решать, в чем причина. - person uminder; 11.12.2019
comment
Можете ли вы помочь с другой функцией, которая возвращает обещание? - person Guilherme Prado; 11.12.2019
comment
@ Guilherme Prado: Пожалуйста, опубликуйте новый вопрос для нового выпуска. - person uminder; 12.12.2019
comment
@ uminder, я разместил здесь stackoverflow.com/questions/59306897/ - person Guilherme Prado; 12.12.2019