我试着模拟NavigationParameters,它将GetNavigationMode((设置为NULL。有没有更好的方法来模拟扩展方法?
对我来说并不成功。但你的参考帮助我找到了一个解决方案,该解决方案已编译(可能是版本问题,我使用Prism 7.1
:
var navParams = (INavigationParametersInternal)new NavigationParameters();
navParams.Add("__NavigationMode", NavigationMode.New);
这也困扰了我一段时间,我终于找到了至少可以解决问题的方法。这个问题表明,您实际上可以将内部参数添加到NavigationParameters中,只是它没有显示在intellisense中。我的测试代码最终看起来像:
var navParams = new NavigationParameters();
navParams.AddInternalParameter("__NavigationMode", NavigationMode.Back);
希望这能有所帮助!
正如@thomas kison所指出的,AddInternalParameter
api似乎不再存在。在Prism回购中搜索只会发现@batesiiic在回答中提到的问题。
为了通过回答@sesteban chornet的问题来补充@thomas kison的答案,我发现这个解决方案将通过将INavigationParametersInternal
参数传递为INavigationParameters
:来工作
// arrange:
var navParams = (INavigationParametersInternal)new NavigationParameters();
navParams.Add("__NavigationMode", NavigationMode.Back);
// act:
_myCoolPageViewModel.OnNavigatedTo(navParams as INavigationParameters);
// assert whatever should happen in OnNavigatedTo given a NavigationMode of NavigationMode.Back
希望这能帮助到别人!