如何测试Behat上下文?

时间:2015-08-08 10:39:09

标签: php unit-testing bdd behat

Behat是一个非常好的工具,BDD / TDD / DDD是IMHO SOLID编码的基础但是...

我经常看到使用Behat的项目,这些项目是非常复杂的未经测试的Context类。

例如:Sylius/TaxonomyContextSylius/ProductContext

j != i

这个例子不是“火箭科学”,但它有很多地方无法奏效。 根据我的经验,Behat Contexts会变得相当复杂。

我是否也应该“信任”我的上下文并假设它们100%正确工作? 或者是否有任何指南/教程我如何测试Behat Contexts?

你做什么的?你怎么做呢?

1 个答案:

答案 0 :(得分:2)

我说这取决于你构建测试套件的方式。

由于Behat是构建自己的测试套件的框架,并且因为它是要构建的软件,所以应该考虑最佳的软件开发实践。其中一个是和MVC概念。在Behat Contexts中有"控制器"并且不应包含太多逻辑。理想情况下,他们应该在底层服务中调用所需的方法,这将提供主要功能。

当然,对于简单的现成步骤(如Mink扩展等提供的步骤),创建一些测试非常容易,而对于更复杂的逻辑,我建议创建一个服务,处理重量级逻辑,检查等。因此,您可以测试来自所有方面的隔离服务,同时保持您的"控制器"语境相当简洁。

另一方面,如果您可以在不涉及大量隐藏逻辑的情况下创建测试(因为测试应该尽可能地开放和清洁),那么您不应该需要任何服务和简单​​的句子都应该足够了。然后,如果你真的关心它们的质量,你可能会做一些小的测试。

对于所提供示例中的复杂情况,我尝试将一些代码封装到服务/管理器中,并在没有任何测试的情况下保留简单的控制器,同时为底层服务提供广泛的测试覆盖。