如何使用Behat / Mink测试条件行为?

时间:2014-03-07 17:47:30

标签: php behat mink gherkin

我有一个条件我想在我的Behat场景中测试,但我想不出应该如何描述。

我正在测试一个显示文章的网页 - 如果有一篇赞助文章那么应该有两篇专题文章,如果没有赞助文章那么应该有三篇专题文章。

我如何在Gherkin中解决这个问题?如果我这样做,比如Given there is one sponsored article,那么一旦没有赞助文章,该测试就会失败。

这超出了工具的范围吗?如果是这样,我将如何测试这种情况?

1 个答案:

答案 0 :(得分:3)

情景应该是确定性的。这意味着如果您依赖数据库中的数据,它也需要具有确定性。

您可以通过多种方式实现它。

一种方法是在测试运行之前或每个方案之前使用已知数据预填充数据库。在场景运行期间将构建一些数据。这可能很昂贵,但最可靠。

另一种方法是使用夹具维护数据库以进行测试。测试套件将以这种方式更快,但您必须小心在测试执行期间所做的更改。

选择哪种方式更好取决于您愿意做出哪些妥协。

您可能希望至少准备两个方案来涵盖边缘情况:

Scenario: One sponsored article

Scenario: No sponsored articles 

除非您可以访问两个不同的页面来重现这两个场景,否则您必须在每个场景之前预先填充(或更新)数据库。

在你的步骤中:

Given there is one sponsored article

您应该创建赞助文章(如果您为每个方案填充数据库),或者验证它是否存在(如果您依赖于预先填充的数据库)。