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で利用可
こんな感じ。