動的に生成されるいくつかのリソースを模擬しようとしています。これらのリソースを生成するには、クラス引数を渡す必要があります。したがって、たとえば:Mockito特定のクラス引数
FirstResourceClass firstResource = ResourceFactory.create(FirstResourceClass.class);
SecondResourceClass secondResource = ResourceFactory.create(SecondResource.class);
これは私がモックしようとするまではうまくいいです。それはモックのように思える
PowerMockito.mockStatic(ResourceFactory.class);
FirstResourceClass mockFirstResource = Mockito.mock(FirstResourceClass.class);
SecondResourceClass mockSecondResource = Mockito.mock(SecondResourceClass.class);
PowerMockito.when(ResourceFactory.create(Matchers.<Class<FirstResourceClass>>any()).thenReturn(mockFirstResource);
PowerMockito.when(ResourceFactory.create(Matchers.<Class<SecondResourceClass>>any()).thenReturn(mockSecondResource);
は、呼び出し元のクラスに注入されているが、FirstResourceClass
はコンパイルエラーをスローmockSecondResource
を、送信されている:私はこのような何かをしています。
問題は、私がthis questionから得たany()を使用して(私は)思っています。私はisA()
を使用しなければならないと信じていますが、それはClass
引数を必要とするので、そのメソッド呼び出しをどのように行うかはわかりません。私はFirstResourceClass.class
を試しました、そして、それはコンパイルエラーを与えます。
'any()'はいずれの場合も何でも一致しますので、これはうまくいかないでしょう。私はここで 'eq()'を試してみます: 'Matchers.eq(FirstResourceClass.class)'。この方法では、引数が指定されたクラスと等しい場合にマッチャがマッチします。これはおそらくあなたが望むものです。 –