вызов метода moq не проверяется - PullRequest
1 голос
/ 06 мая 2020

У меня есть тестовый метод, который не работает на sso.verify, обратите внимание, что метод CheckUsername имеет два вызова ожидания в методе asyn c? но из-за этого sso verify никогда не возвращается и, следовательно, не проверяется. Но код называется. Как правильно это проверить?

       public void Setup()
    {
        nav = new Mock<INavService>();
        sso = new Mock<ISSOApiService>();
        _vm_Successs = new ForgotPasswordViewModel(nav.Object, sso.Object);
        sso.Setup(x => x.SendEmailCodeRequestAsync(It.IsAny<PasswordTokenRequest>())).ReturnsAsync(new StandardResponse() { ErrorCode = null }).Verifiable();
        nav.Setup(x => x.NavigateTo<ForgotPasswordEnterCodeModel, string>(It.IsAny<string>())).Verifiable(); 
    }


  [Test]
    public void CheckUserName_Success()
    {
        _vm_Successs.UserName = "Timmy";
        var response = _vm_Successs.CheckUsername();
        sso.Verify(e => e.SendEmailCodeRequest(It.IsAny<PasswordTokenRequest>()), Times.Once);
        nav.Verify(mock => mock.NavigateTo<ForgotPasswordEnterCodeModel, string>(It.IsAny<string>()), Times.Once);
    }

Это метод checkusername

public async Task CheckUsername()
{
            PasswordTokenRequest r = new PasswordTokenRequest();
                await SSOAPIService.SendEmailCodeRequestAsync(r);
            await NavService.NavigateTo<ForgotPasswordEnterCodeModel, string>(UserName);
        }

enter image description here

1 Ответ

1 голос
/ 06 мая 2020

вы должны дождаться метода тестирования, поэтому вам нужно сделать свой тест 'asyn c Task' type

также необходимо настроить SendEmailCodeRequestAsyn c с ReturnsAsyn c

    [Test]
    public async Task ShouldDeleteAzureBlobById()
    {
        sso.Setup(x => x.SendEmailCodeRequestAsync(It.IsAny<PasswordTokenRequest>()))
        .ReturnsAsync(new StandardResponse() { ErrorCode = null })
        .Verifiable();

        _vm_Successs.UserName = "Timmy";
        var response = await _vm_Successs.CheckUsername();
        sso.Verify(e => e.SendEmailCodeRequestAsync(It.IsAny<PasswordTokenRequest>()), Times.Once);
        nav.Verify(mock => mock.NavigateTo<ForgotPasswordEnterCodeModel, string>(It.IsAny<string>()), Times.Once);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...