Тесты XUNIT с Dapper Mock сбивают с толку множественные настройки .setupdapperC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Тесты XUNIT с Dapper Mock сбивают с толку множественные настройки .setupdapper

Сообщение Anonymous »

У меня есть следующая часть модульного теста, в которой я использую moq.dapper для настройки возвращаемого значения на методах расширения Dapper :

Код: Выделить всё

_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 не является ef dbcontext , это внутренняя реализация, которая имеет одинаковое имя
В обоих вызовах dbcontext.transaction null . Когда я отлаживаю код, первый вызов метода возвращает ienumerable , содержащий один элемент:

, а во втором вызове это возвращает тариф , который определяется в тестировании. SetupDapperasync Определения, первый вызов возвращает пустые ienumerable и во втором null . По моему мнению, две установки по какой -то причине перезаписывают друг друга.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... per-setups
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение