Я пытаюсь написать единичный тест, чтобы протестировать метод, который в основном принимает некоторые группы данных, а затем запускает метод. По какой-то причине моя установка никогда не вызывается. Я отлаживал, и я проверил типы, которые были переданы и выведены, и данные, и после группировки они точно совпадают. Любые идеи, почему это не сработает?Единичная тестовая установка никогда не вызывается
Это в моем тесте:
MyArray[] grouped = myArray
.SelectMany(x => x.AccountValues)
.GroupBy(x => x.TimeStamp)
.Select(g2 =>
new AccountValue {
Amount = g2.Sum(x => x.Amount),
TimeStamp = g2.Key })
.ToArray();
helper
.Setup(s => s.Compute(grouped, grouped.Count())
.Returns(someValue);
var result = _engine.Get(accountNumbers, startDate, endDate, code);
helper.Verify(v => v.Compute(grouped, grouped.Count()), Times.Exactly(1));
Фактический метод, который я тестирование следующим образом:
public decimal? Get(long[] accountNumbers,
DateTime startDate,
DateTime endDate,
long code)
{
var accountNumbersInt = Array.ConvertAll(accountNumbers, i => (int)i);
var myArray = TransactionManager
.Get(accountNumbersInt, startDate, endDate, code);
var accountValues = GroupData(myArray);
var result= Helper.Compute(accountValues, accountValues.Count());
return result;
}
internal myArray[] GroupData(Account[] myArray)
{
var grouped = myArray
.SelectMany(x => x.AccountValues)
.GroupBy(x => x.TimeStamp)
.Select(g2 =>
new AccountValue {
Amount = g2.Sum(x => x.Amount),
TimeStamp = g2.Key })
.ToArray();
return grouped;
}
EDIT: помощник устанавливается следующим образом в испытательной установке
[SetUp]
public void Setup()
{
_engine = new CalcEngine();
helper = new Mock<IHelper>();
_engine.Helper = helper.Object;
}
Что такое помощник? Обычно это будет выполняться при выполнении вашего фактического теста, оно не должно меняться при первом переходе по этой конкретной строке при отладке. – Gorgsenegger
как вы издевались над помощником? это важная информация, потому что мы не можем видеть, действительно ли вы вызываете помощника, или вспомогательный макет - может быть, это ошибка – Stephan
@Stephan - отредактировал сообщение с помощью вспомогательного кода –