0

テストのサービスである HttpServletRequest をモックアウトしました。

request = createNiceMock(HttpServletRequest.class);
service = createStrictMock(DataProviderService.class);

期待値を設定することにより、コントローラーがサービスによってスローされた例外を処理する動作を確認しています。

expect(service.getData(someObject)).andThrow(new MyException());
replay(endPoint);

私は次と同じことを確認します:

ModelAndView mav = controller.provideDefaultScreen(request);
verify(service);

私のコントローラーはサービスを呼び出し、例外の場合はリクエストに例外の詳細を設定します

request.setAttribute("exceptionMessage", e.getMessage());

この行はエラーを吐き出しています:

java.lang.IllegalStateException: missing behavior definition for the preceding method call:
HttpServletRequest.getAttribute("someAttributeCheckedEarlier")
Usage is: expect(a.foo()).andXXX()

私は、コントローラーが要求に対して何をするかについてはほとんど気にしていません。サービスによってスローされた例外を消費する必要があることだけを心配しています。それに応じて、私はニックモックとしてリクエストを作成しました。それでもこのエラーが発生するのはなぜですか?

4

2 に答える 2

3

コードのスニペットからそれを切り取っていない限りreplay、NiceMock を呼び出していないようです。これにより、「記録」モードから移動し、使用できるようになります。

于 2012-03-29T08:47:17.507 に答える
0

上記の回答とは別に、Spring Mockの使用を検討しましたか? モックの優れたサポートがあり、Web コンテナー外のテストをサポートするために少なくとも easymock を使用する必要のないクラスのホストを提供します。

このフレームワークは Spring とは独立して使用でき、アプリケーションで Spring Framework を使用する必要はありません。こちらも素敵な記事

それが役立つことを願っています。

于 2012-03-31T15:27:56.857 に答える