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
HTTPまたはHTTPSを介して統合するシステム(サービス、ウェブサイトなど)のモックには、MockServerを使用できます。
WireMock
WireMockは、MockServerと同様の、HTTPベースのAPIのシミュレーターです。
JavaScript
cucumber-jsを使用している場合、多くのテストフレームワークから選択できます。どのフレームワークを使用するかは、プロジェクトで使用している他のJavaScriptフレームワークや個人的な好みによって異なります。