0

我有一个具有多个依赖项的控制器,通过在控制器类中使用 spring 配置和 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。

4

1 回答 1

1

好吧,在玩了不同的模拟工具之后,我放弃了模拟部分,回到了 spring 的配置文件功能。

我在 application-context.xml 中创建了一个名为 mockXYZ 的新配置文件

并创建了我想模拟的服务,或者给出一个特定的响应

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

在测试时,我将 mockXYZ 作为我的活动配置文件,并使用自动连接的控制器。

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

希望这对其他人也有帮助。

谢谢

于 2013-06-20T16:19:56.420 回答