Я не могу показать moq свой класс, который имеет методы getter и setter (а не свойства). Мне нужно сохранить переменную где-нибудь, чтобы вернуть ее позже.Как moq класс с методами Get() и Set()
Подпись моего класса:
public interface IMyClass
{
int Get();
void Set(int i);
}
Моя реальная реализация:
- Set() => Шифрует Int и сохраняет его в локальной переменной
- Get() => Расшифровывает int от локальной переменной и возвращает int
Как я хочу, чтобы moq вел себя:
public class MyClassFake : IMyClass
{
private int _local;
public int Get()
{
return _local;
}
public void Set(int i)
{
_local = i;
}
}
То, что я пытался и не работал до сих пор:
var mockMyClass = new Mock<IMyClass>();
var number = new int();
mockMyClass.Setup(x => x.Set(It.IsAny<int>())).Callback<int>(x=> number = x);
mockMyClass.Setup(x => x.Get()).Returns(number);
Благодарим за быстрый ответ. Я googled это, но, к сожалению, я все еще не уверен, как перегрузить мой метод Get(), который получает параметр Func <>. Вы могли бы привести пример? –
@ U.Bulle: Извините, я имею в виду 'Returns()' call: 'Returns (() => number);' –
Мне было немного страшно перегружать реальный класс, но это было даже не нужно и '() =>' сделал трюк. Приятного уик-энда Артуро, ура! :) –