![](/img/trans.png)
[英]How do you stub IQueryable<T>.Where(Func<T, bool>) with Rhino Mocks?
[英]How do I stub a Func<T,TResult> in Rhino Mocks?
我有一个依赖项的类:
private readonly IWcfClient<ITestConnectionService> _connectionClient;
我想打断这个电话:
_connectionClient.RemoteCall(client => client.Execute("test"));
目前无法使用:
_connectionService
.Stub(c => c.RemoteCall(rc => rc.Execute("test")))
.Return(true);
犀牛有可能吗?
如果您对“ test”参数的确切值不感兴趣,则可以使用Arg<>
构造:
_connectionService.Stub(c => c.RemoteCall( Arg<Func<string, bool>>.Is.NotNull ))
.Return(true);
使用接受功能的自定义Do委托并进行测试。 您可以通过将其转换为表达式并解析表达式树来完成此操作,或者仅使用模拟输入运行委托并测试结果。
如果RemoteCall()中的lambda不包含x => x.Execute(“ test”),则以下内容将引发错误-您可以解决这个问题,以使其完全执行您想要的操作。
public interface IExecute {
void Execute(string input)
}
_connectionService
.Stub(c => c.RemoteCall(null)).IgnoreArguments()
.Do(new Func<Action<IExecute>,bool>( func => {
var stub = MockRepository.GenerateStub<IExecute>();
func(stub);
stub.AssertWasCalled(x => x.Execute("test"));
return true;
}));;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.