2015-07-07 5 views
1

Возможно ли создать объект-шпион (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-компонент с дополнительными зависимостями, и поэтому я буду управлять всеми зависимостями.

ответ

0

Насколько я знаю, его не представляется возможным использовать насмешливый рамки в сочетании с arquillian ...

+0

Из моего примера вы могли видеть, что можно использовать mocks. И это работает очень хорошо. Но проблема заключалась в том, чтобы построить отверстие, не являющееся шпионом. Я решил свою проблему, но она не была связана с этим сообщением. –

Смежные вопросы