下面正在测试的服务层中的方法...:
@Service
public class Service{
public Flux<String> methodBeingTested () {
Flux<String> fluxOfTypeString = Flux.just("test");
return fluxOfTypeString;
}
}
字符串
JUnit测试:
@RunWith(MockitoJUnitRunner.class)
public class ServiceTest {
@InjectMocks
Service service;
@Mock
Utility Util;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
Flux<String> fluxOfTypeString = Flux.just("test");
when(service.methodToTest()).thenReturn(fluxOfTypeString);
}
型
在安装模式下,我得到以下错误:
org.mockito.exceptions.misusing.WrongTypeOfReturnValue:
FluxJust cannot be returned by toString()
toString() should return String
型
当不在调试模式下时,我得到以下错误:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
型
有什么想法,这是一个可能的变通办法是什么?任何帮助将不胜感激。
2条答案
按热度按时间yhuiod9q1#
莫奇托在告诉你问题所在。
在没有任何其他证据的情况下,你似乎在试图嘲笑一个真实的物体。
如果你的意图是覆盖和模拟一个特定的方法,你可能需要在一个匹配该签名的接口上创建一个mock,或者在该对象上创建一个
spy
。第二部分表示
when() requires an argument which has to be a method call on a mock
,这就是它所说的。nszi6y052#
你根本不需要
Mockito
来测试methodToTest()
,因为没有第三方类(比如你在ServiceTest
中模仿的Utility
)被调用:字符串
有关测试React流的更多信息,请参阅本文:https://www.baeldung.com/reactive-streams-step-verifier-test-publisher