【发布时间】:2023-03-29 03:03:01
【问题描述】:
我正在尝试切换一些代码,我必须使用 Owned Instances 而不是在容器周围传递。
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();
}
}
}
现在我想 Moq the Func 并注入它,但是对 _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);
}
但这给了我一个运行时错误,它无法将 System.Linq.Expressions.InstanceMethodCallExpressionN 类型的对象转换为 System.Linq.InvocationExpression 类型
【问题讨论】: