ログ日記

作業ログと日記とメモ

Slim3のModelRefをGWTで使えるかどうかのユニットテスト

GWT上でModelRefが利用出来ることが分かったが、サーバー側で一度もgetModel()を実行せずにGWTで初めてgetModel()するともnullが返る。
気を付けていても忘れることがあって思わぬところでエラーが出る。
そんなときはテスト。


ModelRefは内部にModelインスタンスを保持していなければquery()を実行してデータストアから取得する。
そのquery()をmockitoのspyでチェックすれば良い。

class NodeServiceImplTest extends ServletTestCase {
    private NodeServiceImpl service = new NodeServiceImpl();

    @Test
    public void getForGWT() throws Exception{
        Node root = service.getTree("rootKey");
        InverseModelListRef<Node, Node> ref = spy(root.getChildrenRef());

        assertThat(ref.getModelList().size(), is(5));
        // getModelListはservice側で一度も呼ばれていなければquery()を呼び出す

        verify(ref, never()).query();
        // query()が呼ばれていなければGWTで利用可

こんな感じ。