我试图打开一些代码,我必须使用自己的实例而不是传递容器.
public class SyncManager
{
private Func<Owned<ISynchProcessor>> _syncProcessor = null;
public SyncManager(Func<Owned<ISynchProcessor>> syncProcessor)
{
_syncProcessor = syncProcessor;
}
private void Handle()
{
using (var service = _syncProcessor())
{
service.Value.Process();
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想要Moq Func <Owned>并注入它但是对_syncProcessor()的调用没有解决任何问题所以我试过这个.
Mock<ITimer> timer = new Mock<ITimer>();
Mock<Func<Owned<ISynchProcessor>>> syncProcessor = new Mock<Func<Owned<ISynchProcessor>>>();
Mock<Owned<ISynchProcessor>> proc = new Mock<Owned<ISynchProcessor>>();
[TestInitialize]
public void TestInitialize()
{
timer = new Mock<ITimer>();
syncProcessor = new Mock<Func<Owned<ISynchProcessor>>>();
syncProcessor.Setup(item => item.Invoke()).Returns(() => proc.Object);
}
Run Code Online (Sandbox Code Playgroud)
但是这给了我一个运行时错误,它无法将System.Linq.Expressions.InstanceMethodCallExpressionN类型的对象强制转换为System.Linq.InvocationExpression类型
Thr*_*ion 12
好的,我觉得我对此有点满意.没有理由嘲笑Func.这样做似乎让我重回正轨.
Func<Owned<ISynchProcessor>> syncProcessor;
Mock<ISynchProcessor> proc = new Mock<ISynchProcessor>();
[TestInitialize]
public void TestInitialize()
{
syncProcessor = () => new Owned<ISynchProcessor>(proc.Object, new Mock<IDisposable>().Object);
}
Run Code Online (Sandbox Code Playgroud)
现在我可以将具体的Func传递给我的类,让它返回我真正想要Mock,我的处理器的类,并验证它的调用正在完成和处理.
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |