У меня возникли проблемы при настройке моего Moq.
У меня есть макет с методом, у которого есть параметр 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
, даже если это статическое поле, которое я изменяю.