【发布时间】:2018-06-04 17:15:47
【问题描述】:
我在配置起订量时遇到了一些问题。
我有一个带有 out 参数的方法的模型。这个 out 参数确实有用,我需要根据收到的参数填充一些有意义的值。
目前,我无法做到这一点,可以吗?怎么样?
这是我目前的状态:
Mock<IMyMock> _mock = new Mock<IMyMock>();
bool someFlag= false;
_mock.Setup(m=>m.GetSomething(It.IsAny<DateTime>(), It.IsAny<DateTime>(), out someFlag))
.Returns((DateTime start, DateTime end, bool someFlagInternal)=>{
IEnumerable<SomeOtherClass> otherClasses = GenerateMockedData(start, end);
//Assign something to someFlag, depending on start and end
someFlag=true;//This has no effects
}) ;
new SomeController(_mock.Object);
在我的SomeController 中,在特定方法上,我的真实非模拟代码调用它:
public class SomeController{}
private IMyMock _someObjectThatWeDontKnowIsAMock;
public SomeController(IMyMock someObjectThatWeDontKnowIsAMock) {
_someObjectThatWeDontKnowIsAMock= someObjectThatWeDontKnowIsAMock;
}
private void ComputeNext() {
Tuple<DateTime, DateTime> times = ComputeNextTimes();
bool hasOverlap;
IEnumerable<SomeOtherClass> otherClassesInstances = _someObjectThatWeDontKnowIsAMock.GenerateMockedData(times.Data1, times.Data2, out hasOverlap);
if(hasOverlap) {
//...
}
}
}
每次我调用我的模拟,它似乎返回someFlag 的第一个值,即使它是我修改的静态字段。
【问题讨论】:
标签: c# .net unit-testing mocking moq