2013-06-11 16 views
0

我有一个控制器与多个依赖关系,这是通过在控制器类中使用弹簧配置和Autowired解决。我可以嘲笑我的控制器只有一个依赖项

例如:

@Controller 
public class MyController{ 
    @Autowired 
    private Type1 myDependency1; 

    @Autowired 
    private Type2 myDependency2; 

} 

我想使“mydependency1”被嘲笑和其他一切都自动连接到测试这个控制器。

我该怎么做?

我以前以下如下测试:

@Mock 
private Type1 myDependency1; 

@InjectMocks 
private Mycontroller controller = new MyController(); 

private MockMvc mockMvc; 
@Before 
public void setUp(){ 
    mockMvc = standaloneSetup(controller).build(); 
} 

但这只是与myDependency1的模拟返回控制,而不是注射myDependency2。

回答

1

在玩过不同的模拟工具后,我放弃了模拟部分,回到了配置文件函数的春天。

我创建了一个名为mockXYZ新的配置文件在我的应用程序的context.xml

而且创造我想嘲笑,或给予一定的响应,

@Service("type1") 
@Profile("mockXYZ") 
public class Type1Mock implements Type1{ 
    .... 
} 

当测试,我做服务mockXYZ作为我的活动配置文件,并使用自动装配我的控制器。

像这样,我只能模拟一个依赖项,而其他依赖项正常工作,因为它们只有一个实现并且会被选中用于任何配置文件。

希望这可以帮助其他人。

谢谢

相关问题