unit-testing - MvvmCross:带插件的单元测试服务

标签 unit-testing xamarin mvvmcross


我正在使用 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/

相关文章:

c# - Moq 具有匿名类型的函数

java - 将属性设置为模拟对象 jmock

xamarin - 存档 Xamarin Android 应用程序会出现错误 XABLD7019

mvvm - MVVMCross 中 View 模型的 UI 线程问题

c# - 有人可以解释测试驱动开发中的 "Fake it till you make it"方法吗?

swift - 有没有一种传统的方法来编写等待 CloudKit 查询完成的单元测试?

android - 错误的 Xamarin 形成图像维度

ios - Xamarin SpriteKit 使用键运行 Action

ios - MvvmCross Xamarin.Forms(iOS): Using a TabbedPage within a MasterDetail page

android - 在 MvvmCross 中以编程方式创建和绑定(bind) Android Spinner