模拟和测试MvvmCross NavigationService

我正在使用导航服务来执行ViewModels之间的导航,现在我必须为ViewModel创建一些单元测试。我能够模拟ViewModel创建Moq注入的对象,但我很努力地模拟NavigationService,然后创建断言,而不是导航到下一个ViewModel。模拟和测试MvvmCross NavigationService

我从几年前发现了一些文档,所以导航服务并不存在,我在官方MvvmCross文档中找不到关于此事的任何内容,所以现在我处于死路一条。

我正在使用MvvmCross 5.5.0。

[Test] 

public void CheckStatus()

{

Mock<IStatusService> _mockStatusService = new Mock<IStatusService>();

_mockStatusService.Setup(x => x.Check(It.IsAny<StatusRequest>())).Returns(() => new StatusRequest { Ok = true });

//Here I need to pass the NavigationService to the constructor

var _viewModel = new StatusViewModel(_mockStatusService.Object, navigationService);

_viewModel.Start();

//Here I guess I should perform the navigation assertion.

}

回答:

我发现如何模拟和测试NavigationService。我在这里发布解决方案,因为这对其他人很有用。

[Test] 

public void CheckStatus()

{

IFixture _fixture = new Fixture().Customize(new AutoMoqCustomization());

Mock<IMvxNavigationService> _navigationService = _fixture.Freeze<Mock<IMvxNavigationService>>();

var _viewModel = new StatusViewModel(navigationService);

_viewModel.Start();

_navigationService.Verify(x => x.Navigate<NextViewModel>(null), Times.Once());

}

以上是 模拟和测试MvvmCross NavigationService 的全部内容, 来源链接: utcz.com/qa/263726.html

回到顶部