首页 > 解决方案 > 在 mockito 中,我如何确保我的 mock 只充当 mock?

问题描述

与 easymock 不同的是,mockito 似乎很乐意让您在没有设置任何期望的 mock 上调用任何方法。

假设这是正在测试的方法:

public void printId(MyObject myObject) {
  System.out.println(myObject.getId());
}

我写了这个测试代码:

myObject = Mockito.mock(MyObject.class);
ClassImTesting.printId(emailCampaign);

我想要和期望的是 mockito 向我抱怨,因为当它的测试代码询问 myObject.getId() 时,它应该不知道该怎么做。相反,它所做的是打印空值。

相反,如果我将测试代码更改为:

myObject = Mockito.mock(MyObject.class);
when(myObject.getId()).thenReturn("myId");
ClassImTesting.printId(emailCampaign);

它按预期工作并打印 "myId" ,因此模拟工作正常。如果我没有时间,为什么它会返回 null,为什么这是他们想要的行为,有没有办法制定更严格的规则,所有交互都必须被模拟或测试失败?

标签: javamockito

解决方案


推荐阅读