Я сделал следующий тест для моего класса:
var mock = new Mock<IRandomNumberGenerator>();
mock.Setup(framework => framework.Generate(0, 50))
.Returns(7.0);
var rnac = new RandomNumberAverageCounter(mock.Object, 1, 100);
rnac.Run();
double result = rnac.GetAverage();
Assert.AreEqual(result, 7.0, 0.1);
Проблема была в том, что я передумал, какой диапазон значений Generate(int min, int max)
будет использовать. Так что в Mock.Setup()
я определил диапазон как 0 to 50
, а позже я фактически вызвал метод Generate()
с диапазоном 1 to 100
.
Я запустил тест, и он не прошел. Я знаю, что это именно то, что должно произойти, но мне было интересно, нет ли способа запустить исключение или добавить сообщение при попытке запустить метод с неправильными параметрами.
Кроме того, если я захочу запустить этот метод Generate () 10 раз с разными значениями (скажем, от 1 до 10), придется ли мне делать 10 фиктивных установок или что-то в этом роде или есть специальный метод для него? Лучшее, что я мог придумать, - это (что неплохо, я просто спрашиваю, есть ли другой лучший способ):
for (int i = 1; i < 10; ++i) {
mock.Setup(framework => framework.Generate(1, 100))
.Returns((double)i);
}