如何使用场景大纲

时间:2015-07-27 10:34:50

标签: ruby rspec cucumber scenarios

我想使用Cucumber来测试我的应用程序,该应用程序获取外部网站的快照并记录更改。 我已经使用RSpec分别测试了我的模型,现在想要与Cucumber进行集成测试。 对于模拟网站请求,我使用VCR。

我的测试通常遵循类似的模式:
1.鉴于我有一定的网站内容(我使用VCR录音带这样做)
2.当我拍摄网站的快照时 3.然后应该有1" new" -snapshot和1" new" -log消息

根据网站内容的变化,应创建一个新的" -snapshot,并创建一条新的" -log消息。 如果内容保持不变,则只应创建一条旧的" -log消息。 这意味着,应用程序的行为取决于当前现有的快照 这就是为什么我想在不在每行之后重置数据库的情况下运行不同的场景。

Scenario Outline: new, new, same, same, new
    Given website with state <website_state_1>
    When I take a snapshot
    Then there should be <1> "new"-snapshot and <1> "old"-log messages and <1> "new"-log messages

Examples:
| state | snapshot_new | logmessages_old | logmessages_new |
| VCR_1 |       1      |         0       |         1       |
| VCR_2 |       2      |         0       |         2       |
| VCR_3 |       2      |         1       |         2       |
| VCR_4 |       2      |         2       |         2       |
| VCR_5 |       3      |         2       |         3       |

但是,在每个方案运行后重置DB。 而且我认为场景大纲从未打算像这样使用。场景应该彼此独立,对吧? 我是否在尝试以这种方式解决问题? 可以/应该使用场景大纲还是有另一种优雅的方法来做到这一点?

学家

1 个答案:

答案 0 :(得分:0)

Scenario Outline Examples表中的每一行都应视为一个单独的方案。方案应彼此独立。 如果需要一种方案来依赖于系统处于特定状态,则需要在Given中设置该状态。