6.7.3. Интеграционные тесты клиентского уровня
Интеграционные тесты на клиентском уровне реализуются с применением фреймворка JMockit. С его помощью тест изолируется от Middleware, а также создаются необходимые объекты инфраструктуры.
Класс клиентского интеграционного теста должен быть унаследован от CubaClientTestCase
. В методе @Before
необходимо вызвать унаследованные методы addEntityPackage()
, setViewConfig()
и затем setupInfrastructure()
для создания объектов Metadata
и Configuration
и развертывания метаданных по выбранным сущностям. Далее в методе @Before
можно дополнить инфраструктуру необходимыми мок-объектами с помощью конструкции Expectations
или NonStrictExpectations
.
Пример инициализирующего метода @Before
одного из тестов платформы:
@Before
public void setUp() throws Exception {
addEntityPackage("com.haulmont.cuba.security.entity");
addEntityPackage("com.haulmont.cuba.core.entity");
addEntityPackage("com.haulmont.cuba.gui.data.impl.testmodel1");
setViewConfig("/com/haulmont/cuba/gui/data/impl/testmodel1/test-views.xml");
setupInfrastructure();
metadataSession = metadata.getSession();
dataSupplier = new TestDataSupplier();
dataSupplier.commitCount = 0;
new NonStrictExpectations() {
@Mocked ClientConfig clientConfig;
@Mocked PersistenceHelper persistenceHelper;
{
configuration.getConfig(ClientConfig.class); result = clientConfig;
clientConfig.getCollectionDatasourceDbSortEnabled(); result = true;
persistenceManager.getMaxFetchUI(anyString); result = 10000;
PersistenceHelper.isNew(any); result = false;
}
};
}