Как смоделировать IEnumerable в методе AddClaimsAsyn c для запуска модульного теста - PullRequest
0 голосов
/ 21 января 2020

Мне нужно смоделировать метод AddClaimsAsync(), который здесь. У меня проблема с IEnumerable. После прочтения я обнаружил, что если я издеваюсь над объектом, а затем добавляю его в коллекцию, он должен работать. в контроллере, который нужно смоделировать:

await userManagerWrapper.AddClaimsAsync(usr, new[]
{
    new Claim(JwtClaimTypes.Name, userDto.FirstName),
    new Claim(JwtClaimTypes.GivenName, userDto.FirstName),
    new Claim(JwtClaimTypes.FamilyName, userDto.FamilyName),
    new Claim(JwtClaimTypes.Email, user.Email),
    new Claim(JwtClaimTypes.EmailVerified, user.EmailConfirmed.ToString(), ClaimValueTypes.Boolean)
});

Я получаю ошибку:

'ISetup<IUserManagerWrapper, Task<IdentityResult>>' не содержит определения для 'ReturnsAsync' и Лучшая перегрузка метода расширения 'ReturnsExtensions.ReturnsAsync<IUserManagerWrapper, IntentUser>(IReturns<IUserManagerWrapper, ValueTask<IntentUser>>, IntentUser, TimeSpan)' требует приемника типа 'IReturns<IUserManagerWrapper, ValueTask<IntentUser>>'

1 Ответ

1 голос
/ 21 января 2020

Мне не нужно было ничего возвращать, это был пустой метод.

Также мне не нужно было что-то издеваться. Просто это работает.

        userManagerWrapperMock.Setup(u => u.AddClaimsAsync(admin, new[]
        {
            new Claim(JwtClaimTypes.Name, dto.FirstName),
            new Claim(JwtClaimTypes.GivenName, dto.FirstName),
            new Claim(JwtClaimTypes.FamilyName, dto.FamilyName),
            new Claim(JwtClaimTypes.Email, dto.Email),
            new Claim(JwtClaimTypes.EmailVerified, dto.EmailConfirmed.ToString(), ClaimValueTypes.Boolean)
        }));
...