私はユニットテストとモックを学んでいます。JUnitを実行していて、モックフレームワークを使用する代わりに、既存のクラスとインターフェイスを拡張してモッククラスを手動で作成しました。ここで私の仕事で利用できるのはそれだけなので、モックフレームワークEasyMockを学びたいと思います。他のモックフレームワークを提案するかもしれませんが、それらは私には利用できません。
セットアップ:
ビューとプレゼンターとAPIバックエンドがあります。ユーザーが「アップデートの確認」ボタンをクリックすると、ビューはを呼び出します。このボタンpresenter.checkForUpdates()
は呼び出しをapi.checkForUpdates()
行い、コールバックを期待します。例外が発生した場合、APIはコールバックを介してプレゼンターに通知し、コントローラーはviewメソッドを呼び出しますview.showUserError()
。API bac kendをヒットする非同期の性質のため、コールバックはパラメーターを返さずに使用されます。
テスト対象のオブジェクトはPresenter
です。View.showUserError()
具体的には、APIで例外が発生したときにgetsが呼び出されることをテストしたいと思います。実際のネットワーク呼び出しを行う代わりに、モックApi.checkForUpdates()
してすぐに例外コールバックを呼び出すことができると思います。
問題は、EasyMockのモックの戻り値しか表示されないことです。例えば:
EasyMock.expect(api.checkForUpdates()).andReturn(xxxx)
api.checkForUpdates()
何も返さず、代わりにコールバックを行うため、私には機能しません。私が本当にやりたいことは次のようなものです。
EasyMock.expect(api.checkForUpdates()).andExecute(exceptionCallback(NetworkError));
しかし、その方法がわかりません。私がやりたいことができるものはありますか、それとも基本的なものが欠けていますか?
ありがとう