【发布时间】:2015-04-26 07:22:24
【问题描述】:
我正在为 Symfony 中的 API 编写一些功能测试,这些测试依赖于数据库中的数据。似乎普遍接受的方法是使用Fixtures 并在测试前加载固定装置。
创建一个适合我所有测试的健壮的 Fixture 类库似乎非常令人生畏且不切实际。我使用的是LiipFunctionalTestBundle,所以我只加载我需要的灯具,但这只会让事情变得更容易。
例如,对于某些测试,我可能需要 1 个用户存在于数据库中,而其他测试我可能需要 3 个。除此之外,我可能需要每个用户具有稍微不同的属性,但这完全取决于测试。
我真的很想按需为每个测试创建我需要的数据。我不想用我不需要的任何数据污染数据库这可能是使用 Fixtures 的副作用。
我的解决方案是 use the container 访问 Doctrine 并在运行断言之前在每个测试中设置我的对象。
出于任何我无法预见的原因,这是一个糟糕的决定吗?这似乎是一个相当大的问题,并且让编写测试变得很痛苦。
另一种可能性是尝试使用this port of Factory Girl for PHP,但它似乎没有大量的追随者,尽管工厂女孩在 Ruby 社区中被广泛使用来解决同样的问题。
【问题讨论】:
-
你的方法没有错。选择适合你的。如果你开始遇到@AlpineCoder 指出的一些问题,那么很容易改变。
-
嗨@Brian 你已经看到this 了吗?你在想什么?
-
@Matteo 我不太喜欢这种方法。创建所有这些类有很多开销。我真的希望对每个特定测试用例的实体属性进行更细粒度的控制。
标签: symfony testing functional-testing fixtures