Javascript 之前对之前。什么时候使用它们?
我最近查看了一个同事的代码,发现他在descripe调用顶部的BeforeAll函数中实现了一个jest函数,然后在beforeach函数中创建了一个数据对象。这让我想知道,BeforeAll和beforeach到底有什么区别 是时候。。。我去谷歌了!!我确实找到了一些文章,帮助阐明了两者之间的一些功能差异 调查结果1: 调查结果2: 鉴于我发现的文章,BeforeAll被称为一次且仅一次。而beforeach是在每个单独的测试之前调用的。太棒了!我现在更清楚什么时候叫它了 我还发现BeforeAll最适合用于初始化代码。这很有道理!初始化它一次。轰,你完了 我的困惑是什么时候初始化了,什么时候没有初始化?我发现,在我们的代码中,beforeach的使用频率比beforeach高。我好奇的是,什么样的代码被认为是“初始化”代码,而不是beforeach中应该包含的任何代码 下面是我们代码中的一个示例:Javascript 之前对之前。什么时候使用它们?,javascript,unit-testing,testing,jestjs,Javascript,Unit Testing,Testing,Jestjs,我最近查看了一个同事的代码,发现他在descripe调用顶部的BeforeAll函数中实现了一个jest函数,然后在beforeach函数中创建了一个数据对象。这让我想知道,BeforeAll和beforeach到底有什么区别 是时候。。。我去谷歌了!!我确实找到了一些文章,帮助阐明了两者之间的一些功能差异 调查结果1: 调查结果2: 鉴于我发现的文章,BeforeAll被称为一次且仅一次。而beforeach是在每个单独的测试之前调用的。太棒了!我现在更清楚什么时候叫它了 我还发现Before
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
我想指出,这段代码不是我自己写的,而是我们软件团队中的一位成员写的。他把对象放在beforeach中,把mock放在beforeach中
我的困惑是,似乎所有的代码都可以放在前面,只有少数例外。两者都用于设置一个或多个测试所需的任何条件 如果您确定测试不会对这些条件进行任何更改,则可以在之前使用
(将运行一次)
如果测试确实对这些条件进行了更改,那么您需要在每次测试之前使用
,它将在每次测试之前运行,以便为下一次测试重置条件
除非初始化速度慢或计算成本高,否则最好在每次
之前默认使用,因为这样可以减少人为错误的机会,即没有意识到一个测试正在改变下一个测试的设置
您展示的示例是将两者结合使用的一个很好的示例——慢速网络调用在
之前就被放入了,因此它只需要发生一次;每次在之前
完美的解释中,数据对象(可能被测试修改)都会被重置!现在这更有意义了。我忘记了数据结构可以更改,从而允许在每次测试之前重置beforeach。谢谢大家!@技术上,你可以接受这个答案。