xamarin.forms - 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();。”。所以我猜设置出错了,但为什么呢?
解决方案
推荐阅读
- django - 如何使用带有默认参数的 update_or_create
- pandas - 将每日股票收益转换为每周股票收益
- windows - 有没有办法在 xml 文件中找到特定的字符串,然后用批处理脚本替换它下面的下一个字符串?
- java - Spring Security HttpSecurity 配置
- reactjs - 在 React Router DOM 的历史导入中未定义 createBrowserHistory
- java - Spock 和 Groovy:变量赋值导致 null
- javascript - Ionic 4 插件 - 对象不是函数
- c++ - 为什么 std::tuple 的代码无法在 MSVC 上编译
- asp.net - MissingMethodException:升级 EF6 后无效 System.Data.Entity.Infrastructure.LocalDbConnectionFactory..ctor()
- uiviewcontroller - 如何将一个视图控制器的方向锁定为横向模式 [iOS13]