Как проверить внутри метода EF ExecuteAsync?C#

Место общения программистов C#
Ответить
Anonymous
 Как проверить внутри метода EF ExecuteAsync?

Сообщение Anonymous »

у меня был код, который выполняет некоторые действия в рамках метода ExecuteAsync of Entity. Я должен проверить реализацию, мы используем NUNIT с NSUBSTITUTE, но я могу достичь кода внутри executeAsync. < /P>
public class UserResilientService
{
private readonly MyContext _context;

public UserResilientService(MyContext context)
{
_context = context;
}

public async Task AddUserWithResilienceAsync(Users user)
{
var strategy = _context.Database.CreateExecutionStrategy();
return await strategy.ExecuteAsync(async () =>
{
_context.Add(user);
return await _context.SaveChangesAsync();
});
}
}
< /code>
Я попытался написать тест, как этот < /p>
[Test]
public async Task AddUserWithResilienceAsync_CallsSaveChanges()
{
// Arrange
var user = new Users();

var dbContext = Substitute.For();
var dbFacade = Substitute.For(dbContext);
var executionStrategy = Substitute.For();

dbContext.Database.Returns(dbFacade);
dbFacade.CreateExecutionStrategy().Returns(executionStrategy);

executionStrategy
.ExecuteAsync(Arg.Any())
.Returns(callInfo =>
{
var func = callInfo.Arg();
return func();
});

var service = new UserResilientService(dbContext);

// Act
var result = await service.AddUserWithResilienceAsync(user);

// Assert
Assert.That(result, Is.EqualTo(1));
await dbContext.Received(1).Add(user);
await dbContext.Received(1).SaveChangesAsync();
}
< /code>
} < /p>
Насмеевает executeAsync (arg. any ... возвращает систему ошибок. Argumentnullexception: значение не может быть нулевым. (Параметр 'Operation'), удаляя этот макет. но ничего не работает.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ync-method
Ответить

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

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

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

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

Вернуться в «C#»