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

时间:2018-11-01 10:20:46

标签: xamarin.forms navigation mocking prism static-methods

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

3 个答案:

答案 0 :(得分:1)

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

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

希望这会有所帮助!

答案 1 :(得分:1)

如@ thomas-kison所指出,AddInternalParameter api似乎不再存在。 search through the Prism repo仅显示@batesiiic在其答案中引用的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

希望这可以帮助某人!

答案 2 :(得分:0)

不是为我锻炼。但是您的参考资料帮助我找到了经过编译的解决方案(也许是版本问题,我使用Prism 7.1

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