我正在使用 MvvmCross v3 和 Xamarin 解决方案创建一个跨平台项目,我想创建一些单元测试。
This似乎有点过时,所以我试图关注 this它按预期工作。
但是,我现在正在尝试对我的一些域服务进行单元测试,这些服务依赖于平台特定的 MvvvCross 插件(例如 ResourceLoader
)。
运行测试结果出现如下异常:
Cirrious.CrossCore.Exceptions.MvxException: Failed to resolve type
Cirrious.CrossCore.Plugins.IMvxPluginManager.
我假设 IMvxPluginManager
可能已在设置流程中注册,并且我需要在我的项目中包含插件的平台实现,但我想知道设置的首选方式是什么我的单元测试项目?有什么我想念的吗?
是否有针对上述任务的更新教程?
是否已经有任何支持测试环境的插件平台扩展,还是我应该尝试自己编写它们?
最佳答案
一般来说,您不应该在服务测试期间加载插件或真正的 MvxPluginManager
。
相反,您的单元测试应该为您的服务需要使用的接口(interface)注册模拟类型。
var mock = new Mock<INeedToUse>();
// use mock.Setup methods
Ioc.RegisterSingleton<INeedToUse>(mock.Object);
// or you can use constructor dependency injection on INeedToUse instead
如果你真的需要,你也可以注册一个模拟的 IMvxPluginManager
,但在大多数情况下,我认为你不需要那个。如果您遇到绝对需要它的情况,请发布代码示例 - 用代码比用文本更容易交流。
关于unit-testing - MvvmCross:带插件的单元测试服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259745/