我想嘲笑我的课内的对象。Java测试与mockito:模拟类对象
public class Controller{
private StandardEmailSender sender = new StandardEmailSender();
public void process() throws EmailException {
// do some stuff
sender.sendEmail(to, subject, body);
// do some stuff
}
}
我想模拟sender.sendEmail(to, subject, body);
。我花了一些时间找到一个解决方案,但我卡住了。我试图直接嘲笑对象StandardEmailSender是这样的:
@Mock
StandardEmailSender sender;
@Before
public void setUp() throws EmailException {
MockitoAnnotations.initMocks(this);
doNothing().when(sender).sendEmail(anyString(), anyString(), anyString());
}
@Test
public void test() throws EmailException {
Controller controller= new Controller();
controller.process();
//make some asserts
}
有人有我的问题的解决方案吗?谢谢!
好,谢谢,@InjectMocks诠释完美的作品 – Kagelmacher
@Kagelmacher是它。但有些人仍然不喜欢它:https://tedvinke.wordpress.com/2014/02/13/mockito-why-you-should-not-use-injectmocks-annotation-to-autowire-fields/ ...并在如果您发现我的答案充足,请不要忘记在某些时候接受。 – GhostCat