私はかなり自動化されたテストに慣れています。私はクラスをmockitoで嘲笑することにいくつかの問題を抱えています。基本的に私がやろうとしているのは、このメソッド(Request(Response))が呼び出されたときに、メソッドに送られているインターフェースを利用することです。mockitoを介在させて、 (コールバック.OnSuccess(Obj))。ここで私は私が必要とイマイチすべてを取り出してきた私の生産コードから始めますが、私が何を意味するかの例です:Mokito、Mockingメソッドの振る舞い
ServerRequestクラス
public void Request(ResponseInterface callback){
//The contents of this class isnt really important as I do not wish to use any of it
//but in general this makes a request to the server and if the request is a success then
Object obj = ProcessResponse(Response);
callback.OnSuccess(obj);
//otherwise
Object obj = ProcessResponse(Response);
callback.OnError(obj);
}
ResponseInterface
public interface ResponseInterface(){
void OnSuccess(Object resp);
void OnError(Object resp);
}
MainActivity
public void MakeRequest(){
ServerRequest.Request(new ResponseInterface(){
@Override
public void OnSuccess(Object objResponse){
//do something to show user the request was successful depending on the current activity
}
@Override
public void OnError(String e){
//do something depending on the current activity
})
}
これまでのところ、私は複数の方法を試みました。次のコードに出てきますが、私はあなたが投稿からそれがうまくいかないと言うことができると確信していますが、私がやろうとしていることについて誰かによりよい考えを与えるかもしれないので、
ServerRequest mockReq = mock(ServerRequest.class);
Mockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) throws Throwable {
System.out.println("Running first time");
Object[] arguments = invocation.getArguments();
ResponseInterface inter = (ResponseInterface) arguments[2];
Object obj = "Already taken";
inter.OnSuccess(obj);
return null;
}
}).when(mockReq).InformationRequest(ArgumentMatchers.anyMap(),anyString(),ArgumentMatchers.<ServerInterface>any());
私が何をしているのかわからないので、この問題についての助けを得ることができます。
「RequestDataInterface」とは何ですか? 1 /あなたがテストコード(あなたが持っているもの)2をテストしたいコードと無関係なものをすべて削除してください。 –
申し訳ありません私は早めに嘲笑していたし、元に戻すのを忘れてしまったので、私は今すべての問題を修正したと思います。 –