slim3 で単体テストを行う時のDataStoreの扱いが分からない。
No API environment is registered for this thread.
どうやら、Datastore.createKey()実行時に発生しているようなのだが、原因が分からない。
テスト用のクラスを継承したクラスで実行する場合は動くので、その辺りに何かあるのだろうか?
■動かないパターン
public class LoginHelper {/**
* 会員を操作するサービス
*/
private MemberService service = new MemberService();/**
* テスト用の会員を返す
*/
public Member getMember() {
Member member = new Member();
member.setName("hoge");
service.insert(member); /* このメソッドの中で、Datastore.createKey()している */
}
}public class LoginViewHelperTest extends AppEngineTestCase {
/** LoginInfo */
private member = new LoginHelper().getMember(); /* ここでエラー */@Test
public void インスタンス生成() {
LoginViewHelper helper = LoginViewHelper.getInstance(loginInfo);
assertThat(helper,is(notNullValue()));
}}
■動くパターン
public class ControllerTest extends ControllerTestCase {private MemberService service = new MemberService();
@Test
public void run() throws Exception {
Member member = new Member();
member.setName("hoge");
service.insert(helper.getMember()); /* ここではエラーにならない */
}
}
やってる処理自体は変わらない気がするので、タイミングとかなのだろうか?