Java 如何使用@InjectMocks作为要模拟的另一个类的依赖项?
假设我有一门课:Java 如何使用@InjectMocks作为要模拟的另一个类的依赖项?,java,spring,dependency-injection,mockito,spring-test,Java,Spring,Dependency Injection,Mockito,Spring Test,假设我有一门课: public class Boy { @Inject @Named("birthDay") BirthDay bday; } 我想模拟它,但问题是生日类本身使用了一个依赖项,我也想模拟和控制它,我不能在同一个类上同时使用@InjectMocks和@mock,你如何实现同样的效果?为什么需要在模拟中注入一些东西? 您需要有两个测试
public class Boy
{
@Inject
@Named("birthDay")
BirthDay bday;
}
我想模拟它,但问题是生日类本身使用了一个依赖项,我也想模拟和控制它,我不能在同一个类上同时使用@InjectMocks和@mock,你如何实现同样的效果?为什么需要在模拟中注入一些东西? 您需要有两个测试类来测试
男孩
和生日
类
在这里,您应该测试一个Boy
类的逻辑
public class BoyTest{
@Mock
private BirthDay brithday;
@InjectMock
private Boy boy;
}
而生日的逻辑应该有自己的测试类
public class BirthDayTest {
@Mock
private Dependency dependency ;
@InjectMock
private BirthDay brithday;
}
因此,您应该假设您的mock返回一些您需要的数据。并检查被测单元在给定数据下是否按预期工作。为什么需要在模拟中注入一些东西?
您需要有两个测试类来测试男孩
和生日
类
在这里,您应该测试一个Boy
类的逻辑
public class BoyTest{
@Mock
private BirthDay brithday;
@InjectMock
private Boy boy;
}
而生日的逻辑应该有自己的测试类
public class BirthDayTest {
@Mock
private Dependency dependency ;
@InjectMock
private BirthDay brithday;
}
因此,您应该假设您的mock返回一些您需要的数据。并检查您的测试单元在给定数据下是否按预期工作。当您模拟生日并在男孩身上进行@injectmocks时,您会遇到什么问题?假设生日有一个我想要模拟和控制的字段日期,并且它在生日时被注入;我如何在我的测试课上模拟它?当你模拟生日并在男孩身上做@injectmocks时,你会遇到什么问题?假设生日有一个我想要模拟和控制的字段日期,它在生日中被注入;我如何在我的测试类中模拟它?我实际上想在该模拟中使用一个函数(它访问最终保存数据的DAO,我想模拟相同的DAO)。我需要使用手动刀吗?或者我可以使用when-then来完成它吗?我宁愿使用when-then子句。因为您正在测试Boy类,所以您应该假设您的模拟返回您需要的数据。否则它就不再是单元测试了。如果您想为@InjectMock准备一些不可由@Mock处理的依赖项,该怎么办。例如Context。@Kenji我不确定我是否理解了你的问题,但是如果你想通过真正的实现,那么你可以自己初始化字段并用@Spy
标记它,如下所示:@Spy private Context Context=new Context()代码>@SergiiBishyr那么它可以被“@moke”ed对象使用?我实际上想在该模拟中使用一个函数(它访问最终保存数据的DAO,我想模拟相同的DAO)。我需要使用手动刀吗?或者我可以使用when-then来完成它吗?我宁愿使用when-then子句。因为您正在测试Boy类,所以您应该假设您的模拟返回您需要的数据。否则它就不再是单元测试了。如果您想为@InjectMock准备一些不可由@Mock处理的依赖项,该怎么办。例如Context。@Kenji我不确定我是否理解了你的问题,但是如果你想通过真正的实现,那么你可以自己初始化字段并用@Spy
标记它,如下所示:@Spy private Context Context=new Context()代码>@SergiiBishyr那么它可以被“@moke”对象消耗?