Я считаю, что это о том, что я называю "побочными эффектами". Вы проверяете свои функции в своих модулях / компонентах, чтобы убедиться, что требуемое поведение достигнуто. Это лучший способ убедиться, что написанный вами код не имеет побочных эффектов, кроме своей цели. Поскольку тесты E2E выполняются с помощью симуляции взаимодействия с пользователем, вам не нужно проверять, что должна делать кнопка, поскольку вы должны были протестировать ее с помощью модульных тестов ранее. Это означает, что при правильном тестировании заранее побочный эффект невозможен. Я думаю, это немного расплывчато, но надеюсь, что это поможет

сь, что кто-то закроет мой вопрос, но я не смог найти удовлетворительный вопрос (возможно, потому что я очень ограничен в мире Angular 2+ и понял что-то не так).

Насколько я мог понять, после нескольких Hello World и нескольких демоверсий YouTube:

нг тест:

вы пишете свой тест, используя язык жасминвы тестируете свой тест со многими браузерами, доступными с помощью Karmaвы выполняете либо модульное, либо комплексное тестированиевсеxxx.compnent.spec.ts запустить и окончательный отчет, похожий на JUnit отображается в браузере

нг е2е:

вы пишете свой тест, используя язык жасминвы тестируете свой тест со многими браузерами, доступными с помощью Karma

вы пишете свои тесты с учетом вложенности пользовательских событий

eg. page.navigateTo();
page.getParagraphText()
  .then(msg => expect(msg).toEqual('Welcome to app!!'))
  .then(msg => expect(msg).toEqual('xxx'))
  .then(done, done.fail);

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

запускаются тесты в папке e2e и результат выводится на консоль командной строки

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

Надеюсь, пока здесь все правильно, мне интересно, что происходит за кулисами, которые действительно отличают их. Я не хочу сравнивать, что лучше, но, конечно, я как-то упускаю какой-то момент, потому что я создал несколько тестов, используя ту же идею, что и конечный пользователь, и вызвал ее с помощью теста ng.

Например:

...

it('should display the modal when `create Paste` is clicked', () => {

    let createPasteButton = fixture.debugElement.query(By.css("button"));
    //create a spy on the createPaste  method
    spyOn(component,"createPaste").and.callThrough();

    //triggerEventHandler simulates a click event on the button object
    createPasteButton.triggerEventHandler('click',null);

    //spy checks whether the method was called
    expect(component.createPaste).toHaveBeenCalled();
    fixture.detectChanges();
    expect(component.showModal).toBeTruthy("showModal should now be true");
    expect(element.innerHTML).toContain("source-modal");
});

...

Я вспомнил, что прочитал что-то вроде «транспортир предлагает поведение ожидания / сна во время выполнения тестов», но я не вижу, где это совокупное значение, когда я вижу, что тесты, выполненные без транспортира, могли также моделировать конечного пользователя. Пока вы кодируете свои тесты для выполнения точно такого же потока, который выполняется конечным пользователем, это будет тот же самый тест e2e, который предлагается в папке e2e, созданной Angular Cli.

Если мое исследование привело меня к правильному пониманию, как указано выше, то единственное реальное отличие заключается в том, как я, как разработчик, организовываю свои тесты. За сценой ничего особенного не происходит.

Опять же, я был бы признателен за то, чтобы расценить это как уточняющий вопрос для диатических целей: здесь нет никакого намерения сравнивать рамки.

Ответы на вопрос(1)

Ваш ответ на вопрос