По моему мнению, насмешка над такой большой структурой, как Objectify, не может полагаться на Mockito.
public class ProductTest {
@Rule
public EmbeddedDataStore store = new EmbeddedDataStore();
@Before
public void register() {
ObjectifyService.register(Product.class);
}
@Test
public void accessObjectifyWithSuccess() {
Objectify ofy = ObjectifyService.begin();
ofy.put(new Product());
assertEquals(1, ofy.query(Product.class).list().size());
}
}
Правило @ загружает хранилище данных перед тестом. Затем класс Product регистрируется и выполняются интеграционные тесты.
Таким образом, с помощью этой техники вы можете запускать тесты на App Engine / Objectify без развертывания приложения.
Следующий код является одним из способов кодирования правила хранилища данных:
import org.junit.rules.ExternalResource;
import com.google.appengine.tools.development.testing.LocalServiceTestHelper;
public class EmbeddedDataStore extends ExternalResource {
private static LocalServiceTestHelper helper;
@Override
protected void before() throws Throwable {
helper = new LocalServiceTestHelper(new LocalDatastoreServiceTestConfig(),
new LocalBlobstoreServiceTestConfig(), new LocalTaskQueueTestConfig(),
new LocalMemcacheServiceTestConfig());
}
@Override
protected void after() {
helper.tearDown();
}
}