首页 > 解决方案 > 如何在测试前设置对象

问题描述

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

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

标签: unit-testingcodeception

解决方案


一般来说,您在测试中应该争取的是,在执行您的被测系统 (SUT) 时,这发生在明确定义的上下文中。在测试执行期间,您希望控制所有可能影响 SUT 执行的方面。因此(通常)不建议在测试之间重用对象,因为之前的测试可能已经对对象进行了修改。这可能会对以后的测试结果产生影响。即使您知道执行测试的确切顺序,反对在测试之间共享对象的建议仍然有效(测试应该是独立的 - 网络上有很多关于此的信息,例如为什么在单元测试中测试不应该依赖于执行顺序? )。

因此,除非在特殊情况下,否则您希望每次测试都有一个新对象。您可以在 中创建它_before,但在每个需要它的测试用例中直接创建它可能会更好(出于可读性目的)。


推荐阅读