如何在测试之前设置对象

问题描述 投票:0回答:1

我在Codeception中设置了一些单元测试,需要创建一个Object实例。我可以在_before中执行此操作,但这会在每次测试之前创建一个新实例。我曾尝试使用_beforeSuite但是Object的构造函数需要一个环境变量,根据我的理解,这不会像在引导前运行之前的那样运行吗?当我尝试这个时,我似乎得到null而不是变量。

我是新手测试所以我很好奇是否可以在_before中创建Object或者我是否应该使用其他东西?

unit-testing codeception
1个回答
0
投票

在测试中,您应该努力的是,在执行被测系统(SUT)时,这会在明确定义的环境中发生。在测试执行期间,您希望控制可能影响SUT执行的所有方面。因此,(通常)不建议在测试之间重用对象,因为先前的测试可能已对对象进行了修改。这可能会对后来的测试结果产生影响。即使您知道测试执行的确切顺序,测试之间共享对象的建议仍然存在(测试应该是独立的 - 在网络上有很多关于此的信息,例如Why in unit testing tests should not depend on the order of execution?)。

因此,除非在特殊情况下,否则您希望每次测试都有一个新鲜的物体。您可以在_before中创建它,但为了可读性目的,甚至可能更好地在需要它的每个测试用例中创建它。

© www.soinside.com 2019 - 2024. All rights reserved.