0

私はこれに対するstackoverlowですでに答えを見つけることができません。これは私が要約できる最も簡単な例です。

モックしたいクラスがあり、このクラスに電話をかけます

public class GetCustomerForUser extends PropertyAction<Customer> ....

PropertyAction:

public abstract class PropertyAction<R> extends AbstractProcessAction<R> implements ValuedAction<R, R> {

実際の呼び出しコードは次のようになります

Customer self = dispatcher.invokeTransactionless(actor, new GetCustomerForUser()); ディスパッチャのタイプはActionDispatcherです

呼び出しモックで

    protected void applyWhenClauses(ActionDispatcher dispatcher, Actor actor) throws ProcessException {
        when(dispatcher.invokeTransactionless(actor, (ProcessAction<Customer>) anyObject())).thenReturn(null);
        ....

ディスパッチャのタイプはActionDispatcherMockです

テストを実行すると、

     org.mockito.exceptions.misusing.InvalidUseOfMatchersException: 
     Invalid use of argument matchers!
     2 matchers expected, 1 recorded.
     This exception may occur if matchers are combined with raw values:
         //incorrect:
         someMethod(anyObject(), "raw String");
     When using matchers, all arguments have to be provided by matchers.
     For example:
         //correct:
         someMethod(anyObject(), eq("String by matcher"));

     For more info see javadoc for Matchers class.

     at com.prolog.test.mock.ActionDispatcherMock2.applyWhenClauses  
           (ActionDispatcherMock2.java:18)
        at com.prolog.test.mock.ActionDispatcherMock.createMockInstance
           (ActionDispatcherMock.java:84)
at com.prolog.test.mock.ActionDispatcherMock.createMockInstance
           (ActionDispatcherMock.java:1)
at com.prolog.test.mockFactory.AbstractPrologInstanceMock.createInstanceMock
           (AbstractPrologInstanceMock.java:11)

ディスパッチャが呼び出すことができるクラスごとにwhenを設定するつもりです。

私がここで間違っていることについて誰かが何か知恵の言葉を持っていますか?

御時間ありがとうございます。

4

1 に答える 1

1

エラーメッセージは、問題が何であるかを示しています。いずれかを使用している場合は、一致しないものを使用するanyことはできませんany

 This exception may occur if matchers are combined with raw values:
     //incorrect:
     someMethod(anyObject(), "raw String");
 When using matchers, all arguments have to be provided by matchers.
 For example:
     //correct:
     someMethod(anyObject(), eq("String by matcher"));

あなたができないと言っていることを正確にどのようにやっているのか見てみましょう。そして、それを修正することはどのように言いますか?

于 2012-06-20T11:42:35.373 に答える