首页 > 解决方案 > Xamarin Forms - xUnit 设置未按预期工作

问题描述

在我的登录视图模型中,我注入了一个导航服务。该导航服务在以下代码中用于导航到特定屏幕

    public async Task HandleLoginCommand()
    {
        var asdf = _navigationService.PushAsync(new MainPage(), false);

        await asdf;
    }

我正在嘲笑的界面

   public interface INavigationService
   {
       Task PushModalAsync(Page contentPageToOpen, bool animated);
       Task PushAsync(Page contentPageToOpen, bool animated);
   }

我为此编写了一个单元测试,它看起来像:

    [Fact]
    public async Task HandleLoginCommand_NavigatesToMainPage_WhenLoginSucceededAsync()
    {
        // Arrange
        navigationService.Setup(s => s.PushAsync(It.IsAny<Page>(), false)).Returns(Task.CompletedTask);

        // Act
        // _loginViewModel.LoginHandelerCommand.Execute(null);
        await _loginViewModel.HandleLoginCommand();

        // Assert
        navigationService.Verify(m => m.PushAsync(It.IsAny<Page>(), false), Times.Once);
    }

这不起作用,设置不会覆盖 pushasync 方法的行为。当我尝试抓住它时,它说:“在使用它之前,您必须调用 Xamarin.Forms.Init();。”。所以我猜设置出错了,但为什么呢?

标签: xamarin.formsinstallationtaskmoqxunit

解决方案


推荐阅读