我正在使用Mockito模拟我的外部服务,并且处理外部服务的方法如下:
TabLayoutViewController
我嘲笑我的回答如下:
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.TabLayoutView);
var set = this.CreateBindingSet<TabLayoutViewController, TabLayoutViewModel>();
set.Apply();
if (bundle == null)
{
ViewModel.ShowInitialViewModelsCommand.Execute();
}
}
到现在为止一切正常。但是,如果我使用另一个RequestParams对象为我的callExternal方法进行了另一个模拟,那么它将在这里感到困惑,并且不知道它应该模拟哪个响应,例如:
public class ExternalConnector{
public ResponseRaw callExternal(RequestParams request, ResponseRaw responseType){
...my implementation to call external service...
}
}
问题在于myParameter.getClass()和myParameter2.getClass()都返回相同的RequestParams类类型,因此,对于这两种情况,模拟的签名基本上是相同的。
我试图将模拟的签名从isA更改为eq,但仍然无法正常工作:
ExternalConnector externalConnector = Mockito.spy(new ExternalConnector());
ResonseRaw myMockResponse = ..... mock the response
RequestParams myParameter = ..... mock the params
doReturn(myMockResponse)//
.when(externalConnector)//
.callExternal(isA(myParameter.getClass()), isA(MyResponse.class));
现在有人可以在这里帮助我吗?谢谢