这有点难以描述,但我需要模拟/ stub 一个方法以根据输入返回 T 的实例。
消息签名如下:
T DoSomething<T>(Action<T> action);
这是 SUT 中的代码:
var myEvent = _service.DoSomething<IMyEvent>(y =>
{
y.Property1 = localProperty1;
y.Property2 = localProperty2;
});
这是我的单元测试中的设置:
service.Setup(x => x.DoSomething<IMyEvent>
(It.IsAny<Action<IMyEvent>>())).Returns((
(Action<IMyEvent> x) =>
{
return new MyEventFake //derives from IMyEvent
{
Property1 = x.Property1,
Property2 = x.Property2
};
}));
这不会编译,因为 x 是一个 Action 。
我想做的事情可行吗?
最佳答案
根据您的代码示例,您似乎可以创建一个新的 MyEventFake
,将其传递给操作,然后再将其返回:
service.Setup(x => x.DoSomething<IMyEvent>
(It.IsAny<Action<IMyEvent>>())).Returns((
(Action<IMyEvent> x) =>
{
IMyEvent myEvent = new MyEventFake();
x(myEvent);
return myEvent;
}));
关于c# - 模拟 Action<T> 以根据参数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25293069/