Возможно ли создать объект-шпион (mock) в классе тестирования?Arquillian с Mockito и CDI
Здесь протестирован класс.
@Stateless
@Slf4j
public class UserDao {
@Inject
private TestBean testBean;
public String mock() {
return testBean.mock();
}
public String notMock() {
return testBean.notMock();
}
}
TestBean код
@Stateless
@Slf4j
public class TestBean {
public String notMock() {
return "NOT MOCK";
}
public String mock() {
return "IMPLEMENTED MOCK";
}
}
Вот мой тест
@RunWith(Arquillian.class)
public class UserDataTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Inject
private UserDao userDao;
@Deployment
protected static Archive createWar() {
File[] dependencies = Maven.configureResolver()
.withRemoteRepo("nexus-remote", "http://maven.wideup.net/nexus/content/groups/public/", "default")
.withRemoteRepo("nexus-release", "http://maven.wideup.net/nexus/content/repositories/releases/", "default")
.resolve(
"org.slf4j:slf4j-simple:1.7.7",
"eu.bitwalker:UserAgentUtils:1.15",
"org.mockito:mockito-all:1.10.8"
).withoutTransitivity().asFile();
return ShrinkWrap
.create(WebArchive.class, "pass.jpa.war")
.addAsWebInfResource("jbossas-ds.xml")
.addAsWebInfResource("jboss-deployment-structure.xml")
.addAsLibraries(
PassApiDeployments.createDefaultDeployment(),
PassUtilLibrary.createDefaultDeployment(),
PassJpaDeployments.createDefaultDeployment()
).addAsLibraries(dependencies);
}
@Test
public void testMock() {
assertEquals("MOCK", userDao.mock());
}
@Test
public void testNotMock() {
assertEquals("NOT MOCK", userDao.notMock());
}
}
Я хотел бы создать объект шпиона на TestBean, чтобы изменить результат в тесте() метод этого боба ,
Так можно создать шпиона TestBean в UserDao.
Я решаю некоторые проблемы с помощью такого производителя.
@Singleton
public class MockFactory {
@Produces
@ArquillianAlternative
public TestBean getTestBean() {
return when(mock(TestBean.class).mock()).thenReturn("MOCK").getMock();
}
}
Но в этом примере мне нужно создать на Bean полностью самостоятельно. И если это bean-компонент с дополнительными зависимостями, и поэтому я буду управлять всеми зависимостями.
Из моего примера вы могли видеть, что можно использовать mocks. И это работает очень хорошо. Но проблема заключалась в том, чтобы построить отверстие, не являющееся шпионом. Я решил свою проблему, но она не была связана с этим сообщением. –