我想使用Cucumber来测试我的应用程序,它会拍摄外部网站的快照并记录更改 . 我已经使用RSpec分别测试了我的模型,现在想要与Cucumber进行集成测试 . 为了模拟网站请求我使用VCR .
我的测试通常遵循类似的模式:
1.鉴于我有一定的网站内容(我使用VCR录音带这样做)
2.当我拍摄网站快照时
3.然后应该有1个"new" -snapshot和1个"new" -log消息
根据网站内容的更改,应创建一个"new" -snapshot,并创建"new" -log消息 . 如果内容保持不变,则只应创建"old" -log消息 . 这意味着,应用程序的行为取决于当前现有的快照 .
这就是为什么我想在不在每行之后重置DB的情况下运行不同的场景 .
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 . 而且我认为场景大纲从未打算像这样使用 . 场景应该彼此独立,对吧?我是否在尝试以这种方式解决问题?可以/应该使用场景大纲还是有另一种优雅的方法来做到这一点?
J.