Код: Выделить всё
_dbContextMock = new Mock();
_dbConnectionMock = new Mock();
// Setup transaction mocks
_dbContextMock.Setup(x => x.BeginTransaction());
_dbContextMock.Setup(x => x.CommitTransaction());
_dbContextMock.Setup(x => x.RollbackTransaction());
_dbContextMock.Setup(x => x.Connection).Returns(_dbConnectionMock.Object);
var existingTariff = new Domain.Entities.Tariff
{
Id = 4,
ProductGroupCode = "WALLET",
Entry = "001",
IsUnblended = 0
};
// No existing tariff with same currency
_dbConnectionMock.SetupDapperAsync(c =>
c.QueryAsync(
It.IsAny(),
It.IsAny(),
null, null, null))
.ReturnsAsync(Enumerable.Empty);
_dbConnectionMock.SetupDapperAsync(c =>
c.QueryFirstOrDefaultAsync(
It.IsAny(),
It.IsAny(),
null, null, null))
.ReturnsAsync(existingTariff);
< /code>
и внутри тестируемого блока у меня есть вызовы в методах настройки. Первый: < /p>
var tariffIdFromDb =await dbContext.Connection.QueryAsync(sql, new
{
CurrencyCode = currencyCode,
TariffId = tariffId,
Status = (int)ETariffStatus.Deleted
}, dbContext.Transaction);
return tariffIdFromDb.Any();
< /code>
Второй: < /p>
var tariff = await dbContext.Connection.QueryFirstOrDefaultAsync(
"SELECT * FROM tariff WHERE id = @TariffId", new { TariffId = tariffId }, dbContext.Transaction);
В обоих вызовах dbcontext.transaction null . Когда я отлаживаю код, первый вызов метода возвращает ienumerable , содержащий один элемент:
, а во втором вызове это возвращает тариф , который определяется в тестировании. SetupDapperasync Определения, первый вызов возвращает пустые ienumerable и во втором null . По моему мнению, две установки по какой -то причине перезаписывают друг друга.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... per-setups