Недавно я просматривал код коллег и понял, что он реализует функцию jest в функции BeforeAll в начале вызова description, а затем создает объект данных в функции beforeEach.Это заставило меня задуматься, в чем именно заключаются различия между BeforeAll и BeforeEach.
Это было время ... Я пошел в Google !!Я нашел некоторые статьи, которые помогли пролить некоторый свет на некоторые функциональные различия между ними.
Выводы 1 : http://breazeal.com/blog/jasmineBefore.html
Выводы 2 : Разница между @Before, @BeforeClass, @BeforeEach и @ BeforeAll
Учитывая статьи, я обнаружил, что BeforeAll вызывается один раз и только один раз.Пока BeforeEach вызывается перед каждым отдельным тестом.Что было здорово!Теперь у меня было лучшее представление о том, когда он вызывался!
Я также обнаружил, что BeforeAll лучше всего использовать для инициализации кода.Что имеет смысл!Инициализируйте это один раз.Бум, ты готов.
Мое замешательство, которое я испытываю, это когда что-то инициализируется, а когда нет?Я обнаружил, что BeforeEach в нашем коде используется чаще, чем нет.Что меня интересует, так это то, какой код считается «инициализирующим» кодом по сравнению с тем, какой код должен быть в BeforeEach.
Пример из нашего кода ниже:
beforeAll((done) => {
// Mocking method from within Box file
transferBoxPlanSpy = jest.spyOn(Box, 'transferPlanFromBox').mockImplementation(() => Promise.resolve());
// Pulling data from MongoDB
User.findOne({ user_name: 'testsurgeon1' }, (err, user) => {
user.addMGSPermission();
user.save(done);
});
});
beforeEach(() => {
planData2 = {
user_name: 'hello1',
laterality: 'right',
plan_id: 'testplan42',
order_number: '856-hd-02-l',
file_id: '123456sbyuidbefui',
};
});
Надеюсь, мой вопрос не слишком расплывчатый.Спасибо за потраченное время!
Редактировать 1 Я хотел бы отметить, что этот код был написан не мной, а одним из наших членов команды разработчиков программного обеспечения.Он помещает объект внутри BeforeEach, а макеты внутри BeforeAll.
Моя путаница заключается в том, что кажется, что весь код можно поместить только в BeforeAll, за некоторыми исключениями.