gpt4 book ai didi

Java Mockito 参数匹配器的无效使用

转载 作者:行者123 更新时间:2023-12-02 01:05:06 26 4
gpt4 key购买 nike

我有以下代码

public MessageProcessorTest() {
_logger = mock(Logger.class);
_context = mock(ExecutionContext.class);

when(_context.getLogger()).thenReturn(_logger);
doNothing().when(_logger).log(any(), anyString());

_mapper = mock(IMapper.class);

_processor = new MessageProcessor(_mapper, _context);
}

@Test
public void testOutputSourceIsMapped() throws SentenceException
{
String inputString = "some string";
when(_mapper.Map(any())).thenReturn(any());

_inputMessage = new ProcessMessage(inputString, new Date().toString());

ProcessResult result = _processor.Process(_inputMessage);

assertNotNull(result);
assertNotNull(result.GetOriginalMessage());
assertNotNull(result.OutputMessage);
assertTrue(result.IsSuccessful);

Raw rawResult = new Gson().fromJson(result.OutputMessage, Raw.class);

assertEquals(FeedSources.S.toString(), rawResult.GetSource());
}

我收到以下错误

detailMessage:"\nInvalid use of argument matchers!\n0 matchers expected, 1 recorded:\n-> at com.emsa.hpims.processor.MessageProcessorTest.testOutputSourceIsMappedToSatAis(MessageProcessorTest.java:61)\n\nThis exception may occur if matchers are combined with raw values:\n    //incorrect:\n    someMethod(anyObject(), "raw String");\nWhen using matchers, all arguments have to be provided by matchers.\nFor example:\n    //correct:\n    someMethod(anyObject(), eq("String by matcher"));\n\nFor more info see javadoc for Matchers class.\n"

执行以下行时

_context.getLogger().log(Level.FINE, "Some log message");

我读过一些相关内容,但我不明白我到底做错了什么。有人可以帮助我吗?

谢谢。

最佳答案

问题很可能出在这一行:

when(_mapper.Map(any())).thenReturn(any());

在这里,您告诉 Mockito 在使用任何内容调用 mapper.map() 时返回 any() (它返回匹配器)。

模拟的全部意义在于允许用户准确指定模拟方法返回的内容。您基本上已经告诉 Mockito 在调用方法时返回任何内容,这是不允许的。

该方法应该返回什么才能实现测试用例?将第二个 any() 替换为该值。

关于Java Mockito 参数匹配器的无效使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60157461/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com