使用 Cucumber 通常不鼓励模拟;理想情况下,您应该尽可能地练习您的堆栈。在某些情况下,使用模拟可能会有帮助。例如,如果您的系统依赖于第三方。如果您依赖于外部系统,我们建议使用 存根而不是模拟。您 **可以** 在您的 步骤定义 中设置带有期望值的模拟。
Ruby
RSpec 2.x
从 Cucumber 0.8.4 开始,您可以使用所有 RSpec 支持的模拟框架 (RSpec、Mocha、RR、Flexmock)。使用 require 'cucumber/rspec/doubles'
(测试双重 是比模拟和存根更通用的术语)。
也许将您的存根操作放在如下所示的块中
require 'cucumber/rspec/doubles'
RSpec::Mocks.with_temporary_scope do
stub_resp = {"city"=>"San Francisco", "state_abbreviation"=>"CA", "state"=>"California", "mailable_city"=>true}
SmartyStreets.stub(:get_city_state).with("94109").and_return(stub_resp)
click_button "check zip"
end
Java
不同的模拟框架可能服务于不同的目的。
Mockito
Mockito 是一个用于在自动化单元测试中创建 测试双重 的框架,用于 TDD 或 BDD 目的。
MockServer
您可以使用 MockServer 模拟您通过 HTTP 或 HTTPS 与之集成的任何系统 (例如服务、网站等)。
WireMock
WireMock 是 HTTP 基 API 的模拟器,类似于 MockServer。
JavaScript
如果您使用 cucumber-js,有许多测试框架可供选择。您使用哪一个可能取决于您的项目正在使用的其他 JavaScript 框架和/或个人喜好。