【发布时间】:2015-07-27 10:34:49
【问题描述】:
我想使用 Cucumber 来测试我的应用程序,该应用程序拍摄外部网站的快照并记录更改。 我已经使用 RSpec 单独测试了我的模型,现在想用 Cucumber 进行集成测试。 为了模拟网站请求,我使用 VCR。
我的测试通常遵循类似的模式:
1. 鉴于我有特定的网站内容(我使用 VCR 磁带进行此操作)
2.当我拍摄网站快照时
3. 那么应该有1个“new”-snapshot和1个“new”-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 |
但是,每个场景运行后都会重置数据库。 而且我认为这个场景大纲从来没有打算像这样使用。场景应该是相互独立的,对吧? 试图以这种方式解决我的问题,我做错了什么吗? 可以/应该使用场景大纲,还是有另一种优雅的方式来做到这一点?
J.
【问题讨论】:
-
场景大纲旨在彼此独立运行。我认为您可以将其更改为常规方案并为此使用常规数据表。
-
我无法弄清楚场景大纲在做什么。带有 的部分应该映射到示例表中的列名,但它们不会映射到这让我感到困惑。您能描述一下正在测试的内容吗?
标签: ruby rspec cucumber scenarios