自定义hamcrest匹配器成功但测试失败

时间:2017-07-31 15:13:44

标签: junit java-8 mockito matcher hamcrest

我有这个自定义匹配器:

public class CofmanStringMatcher extends TypeSafeMatcher<String> {
    private List<String> options;


    private CofmanStringMatcher(final List<String> options) {
        this.options = Lists.newArrayList(options);
    }

    @Override
    protected boolean matchesSafely(final String sentResult) {
        return options.stream().anyMatch(option -> option.equals(sentResult));
    }


    public static CofmanStringMatcher isCofmanStringOnOfTheStrings(List<String> options) {
        return new CofmanStringMatcher(options);
    }

    @Override
    public void describeTo(final Description description) {
        System.out.println("in describeTo");
//        description.appendText("expected to be equal to of the list: "+options);
    }
}

将字符串与字符串的几个选项进行比较。

当我运行此测试代码时:

    verify(cofmanService, times(1))
            .updateStgConfigAfterSimulation(argThat(isCofmanStringOnOfTheStrings(ImmutableList.of(expectedConditionsStrings , expectedConditionsStrings2))), eq(Constants.addCommitMsg+SOME_REQUEST_ID));

我收到此错误:

Comparison Failure:  <Click to see difference>

Argument(s) are different! Wanted:
cofmanService.updateStgConfigAfterSimulation(
    ,
    "add partner request id = 1234"
);
-> at com.waze.sdkService.services.pubsub.callback.RequestToCofmanSenderTest.localAndRtValidationSucceeds_deployCofmanStg(RequestToCofmanSenderTest.java:131)
Actual invocation has different arguments:
cofmanService.updateStgConfigAfterSimulation(
    "some text"
);

即使方法updateStgConfigAfterSimulation调用第一个与列表元素匹配的arg,测试也会失败

我正在使用 mockito 1.10hamcrest 1.3

这是方法的签名

void updateStgConfigAfterSimulation(String conditionsMap, String commitMsg) throws Exception

0 个答案:

没有答案