unit-testing - 使用 ServiceLocator 进行单元测试

标签 unit-testing unity-container

我正在对使用统一依赖注入(inject)框架的类进行单元测试。

这将返回 null:
ServiceLocator.Current.GetInstance();

我怎样才能让它返回一个模拟对象或只是对象本身?

最佳答案

你可以使用穷人的注入(inject)剂。创建一个默认构造函数,该构造函数从服务定位器中检索依赖项,并将这些依赖项转发给将它们作为参数的“真实”构造函数。这需要照顾生产情况。

然后在测试相关类时,将依赖项的假/模拟版本传递给“真实”构造函数,完全绕过默认构造函数。

关于unit-testing - 使用 ServiceLocator 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1573072/

相关文章:

ruby-on-rails - 我如何在 FactoryGirl 中为循环关联创建工厂?

entity-framework - 如何构建工作单元/服务层/存储库,以便它们与 DI (Unity) 和 Moq 一起进行单元测试

c# - 如何使用 Unity 将通用接口(interface)自动注册到该接口(interface)的非通用实现

c# - 我应该在我的 MVVM 应用程序中使用 Microsoft.Practicies.Unity.IUnityContainer 吗?

c# - 如何在 ASP.NET 中使用 IoC 容器配置单元测试?

c# - 带有使用依赖注入(inject)创建的 View 模型的 Prism PopupWindowAction

javascript - Angular 防止 mock $http 服务

oracle - 从一个模式到另一个模式执行 UTPLSQL 测试时遇到错误

javascript - Vue 测试 - '... .push is not a function'

c# - 为什么 datetime 不能比较?