NavigationParameters - GetNavigationMode() 在模拟 NavigationParameters 时为 NULL。

NavigationParameters - GetNavigationMode() is NULL while mocking NavigationParameters.

我尝试模拟 NavigationParameters 并将 GetNavigationMode() 设置为 NULL。有没有更好的方法来模拟扩展方法?

这也困扰了我一段时间,我终于找到了至少可以解决的方法。 This 问题表明您实际上可以将内部参数添加到 NavigationParameters,只是不会显示在智能感知中。我的测试代码最终看起来像这样:

var navParams = new NavigationParameters();
navParams.AddInternalParameter("__NavigationMode", NavigationMode.Back);

希望对您有所帮助!

不适合我。但是你的参考帮助我找到了一个编译的解决方案(也许是版本问题,我使用 Prism 7.1:

var navParams = (INavigationParametersInternal)new NavigationParameters();
navParams.Add("__NavigationMode", NavigationMode.New);

如@thomas-kison 所述,AddInternalParameter api 似乎不再存在。 @batesiiic 在他们的回答中引用了 search through the Prism repo only brings up the issue

为了通过解决@esteban-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

希望这对某人有所帮助!