0

我想使用 Cucumber 来测试我的应用程序,该应用程序拍摄外部网站的快照并记录更改。我已经使用 RSpec 单独测试了我的模型,现在想用 Cucumber 进行集成测试。为了模拟网站请求,我使用 VCR。

我的测试通常遵循类似的模式:
1. 鉴于我有特定的网站内容(我使用 VCR 磁带进行此操作)
2. 当我拍摄网站的快照时
3. 然后应该有 1 个“新”-snapshot 和 1 个“新”-日志消息

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

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。

4

1 回答 1

1

表中的每一行Scenario Outline Examples都应被视为一个单独的场景。场景应该彼此独立。如果您需要一个场景来依赖系统处于某种状态,您需要在Given.

于 2019-06-04T14:26:15.250 回答