【问题标题】:About with(any(Class.class))) with JMock关于 with(any(Class.class))) with JMock
【发布时间】:2012-05-24 05:02:01
【问题描述】:

使用 JMock:

context.checking(new Expectations() {{
    // Other oneOf() will() statements ...

    oneOf(shopAccount).enter(100, with(any(String.class)));
    will(returnValue(true));

   // Other oneOf() will() statements ...
}});

执行过程中会引发以下异常:

java.lang.IllegalArgumentException: 并非所有参数都给出了显式匹配器:要么所有参数都必须由匹配器指定,要么所有参数都必须由值指定,你不能混合匹配器和值。

为什么我不能这样做?使用with(any(Klass.class)) ?

【问题讨论】:

    标签: java testing jmock


    【解决方案1】:

    如果您对任何参数使用with 子句,则必须将它们用于所有参数,请尝试

    oneOf(shopAccount).enter(with(equalTo(100)), with(any(String.class)));

    【讨论】:

    • 不是with(equal(100)),不是equalTo
    • 你的意思是'equals()',那么这是一个返回布尔值的对象方法。 'equalto()' 是一个返回匹配器的静态匹配器方法。
    • @Lukas org.jmock.Expectations.equal(T)org.hamcrest.core.IsEqual.equalTo(T) 是等效定义的(至少在 jmock-2.5.1 和 junit-4.8.2 版本中),所以任何一个都可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2022-08-16
    • 2021-07-04
    • 1970-01-01
    • 2020-06-26
    相关资源
    最近更新 更多