【发布时间】:2020-03-04 14:01:05
【问题描述】:
尝试将我的一个命令调用中的导航单元测试到私有方法中。只是尝试测试是否已作为此命令执行的结果发出导航请求。
有旧文档; https://www.mvvmcross.com/documentation/fundamentals/testing
据我所知,本文档并未考虑新的基于异步的调用;例如 IMvxMainThreadAsyncDispatcher 要么我们需要实现两个 ExecuteOnMainThreadAsync 方法,要么从 MockDispatcher 中的 MvxMainThreadAsyncDispatcher 继承。
IoC注册中还需要添加IMvxMainThreadAsyncDispatcher。
var mockDispatcher = new MockDispatcher();
...
...
Ioc.RegisterSingleton<IMvxMainThreadAsyncDispatcher>(MockDispatcher);
因此,除了导航调用请求之外,几乎所有测试都有效。 MockDispatcher 中的以下方法永远不会被调用,因此我无法检查请求计数;
public async Task<bool> ShowViewModel(MvxViewModelRequest request)
{
Requests.Add(request);
return true;
}
任何人都有一个可以模拟并调用此请求或以其他形式调用的工作代码? IMvxMainThreadDispatcher 被设置为绝对值,在 MVVMCross 中不再使用 ShowViewModel() 进行导航调用,而是通过调用 navigationService.Navigate();
【问题讨论】:
标签: unit-testing xamarin.android xamarin.ios moq mvvmcross