简体   繁体   中英

Arquillian test failed when bean in ViewScoped

I am writing tests with Arquillian embedded. But i am facing issue when my bean is in View Scope . I just posted my sample code. When my DataBean is in ViewScope it doesn't run and throws some exception. But when i changed it to RequestScope it worked fine.

@RunWith(Arquillian.class)  
public class MockTest { 

@Deployment     
    public static Archive<?> createDeployment() {           
        JavaArchive jar = ShrinkWrap.create(JavaArchive.class)                  
            .addClass("pack.ui.DataBean")    
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");    
        return jar;    
    }   

@Inject    
private DataBean dataBean;    

@Test    
public void testDataBean() throws Exception {    

    dataBean.checkSystemStatus();    

    Assert.assertEquals(status, true);    

}

@ViewScoped   
@Named("dataBean")  
public class DataBean {   
    public boolean checkSystemStatus() {  
        return true;   
    }
}

Can someone please tell, Can we use ViewScope with Arquillian or anything else i have to do.

It's because the view scope is not active during the invocation of your test. To run it this way, you'll need to use something like drone/graphene. It's not active because the HTTP request that runs is against the arquillian test runner servlet, not the webpage of your application. ViewScope is specific to a page in your application.

You can mock JSF context of controllers and get rid of annoying exception "No active contexts for scope type ViewScoped" during Arquillian test execution.

Check the original project for JSF 2.0: https://github.com/it-crowd/mock-contexts-extension

or my upgrade for JSF 2.2: https://github.com/kesha/mock-contexts-extension

All you need is the additional annotation @ViewScopeRequired before the test method.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM