當使用 Cucumber 時,通常不建議使用 Mocking;理想情況下,您會盡可能地執行您的整個堆疊。在某些情況下,使用 mocking 可能會派上用場。例如,如果您的系統依賴第三方。如果您依賴外部系統,我們建議使用stubs 而不是 mocks。您可以在您的步驟定義中使用預期來設定 mocks。
Ruby
RSpec 2.x
從 Cucumber 0.8.4 開始,您可以使用所有 RSpec 支援的 mocking 框架 (RSpec、Mocha、RR、Flexmock)。請使用 require 'cucumber/rspec/doubles'
(與 mocks 和 stubs 相比,test-double 是更通用的術語)。
也許可以將您的 stub 動作放在如下的程式碼區塊中
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
不同的 mocking 框架可能有不同的用途。
Mockito
Mockito 是一個框架,用於在自動化單元測試中建立測試替身,以達到 TDD 或 BDD 的目的。
MockServer
您可以使用 MockServer 來模擬您透過 HTTP 或 HTTPS 整合的任何系統(即服務、網站等)。
WireMock
WireMock 是基於 HTTP 的 API 模擬器,類似於 MockServer。
JavaScript
如果您使用的是 cucumber-js,則有許多測試框架可供選擇。您使用哪一個可能取決於您的專案正在使用的其他 JavaScript 框架和/或個人偏好。