- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我很难测试使用 .net 核心 ServiceProvider
返回给定一些逻辑的特定实现的工厂。
using (var scope = _serviceProvider.CreateScope())
{
var services = scope.ServiceProvider.GetServices<IUrlProcessor>();
}
我部分接受了这个
var serviceProvider = new Mock<IServiceProvider>();
serviceProvider.Setup(m => m.GetService(typeof(IEnumerable<IUrlProcessor>)))
.Returns(new List<IUrlProcessor>() {
new PassthruProcessor()
});
GetServices
似乎有效,但 CreateScope
调用只是通过异常。这是一个扩展方法,我不知道我应该模拟的确切类是什么,以便 CreateScope
调用有效。
最佳答案
在这种情况下,创建返回更多模拟的模拟可能无济于事。您的类依赖于 IServiceProvider
,您需要调用 CreateScope()
。
模拟 IServiceProvider
以返回另一个模拟在功能上与使用 真实 ServiceProvider
并将其配置为返回模拟在功能上相同。不同之处在于,如果您使用真正的 ServiceProvider
,则不必模拟 CreateScope
。
(我完全回避了有关何时何地依赖 IServiceProvider.
的问题)
这是一个大大简化的例子:
依赖于 IServiceProvider
的类:
public class ScopedFooFactory : IFooFactory
{
private readonly IServiceProvider _serviceProvider;
public ScopedFooFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public IFoo CreateFoo()
{
using (var scope = _serviceProvider.CreateScope())
{
return scope.ServiceProvider.GetService<IFoo>();
}
}
}
...和一些单元测试代码:
var serviceCollection = new ServiceCollection();
var fooMock = new Mock<IFoo>();
serviceCollection.AddScoped<IFoo>(provider => fooMock.Object);
var serviceProvider = serviceCollection.BuildServiceProvider();
var subject = new ScopedFooFactory(serviceProvider);
var foo = subject.CreateFoo();
Assert.AreSame(fooMock.Object, foo);
对我来说,这比创建返回更多模拟的模拟更简单、更容易。
关于c# - 模拟服务提供者 GetServices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54832377/
我一直在寻找文件系统的 Java 命名和目录接口(interface) (JNDI) 服务提供商。 据我所知,Oracle 与 JDK 捆绑在一起,仅提供 RMI、DNS、LDAP 和 COS 服务提
我不熟悉单点登录的概念。我们已经有一个管理其用户的 Java Web 应用程序。现在的要求是,身份验证将由客户端的 SSO Idp(使用 SAML)提供,之后请求将被转发到我们的应用程序。由于我以前没
当我访问 laravel 时,它说 Symfony \ Component \ Debug \ Exception \ FatalErrorException 'Krucas\Notification
我(我们)正在创建一个包,作为我们 future CMS 的核心组件,当然,该包需要一些单元测试。当包注册时,它做的第一件事就是像这样设置后台/前端上下文: class FoundationServi
有没有办法在 Laravel 中仅为某些路由/URL 注册服务提供商?我想知道是否可以仅在需要的地方绑定(bind)服务,以及它是否有助于减少启动时的压力。 最佳答案 我不确定是否可以仅在特定路线上注
有没有办法在 Laravel 中仅为某些路由/URL 注册服务提供商?我想知道是否可以仅在需要的地方绑定(bind)服务,以及它是否有助于减少启动时的压力。 最佳答案 我不确定是否可以仅在特定路线上注
我正在开发一个 Laravel 5 应用程序,现在应用程序的代码应该在多个 laravel 5 应用程序中重复使用,这就是为什么我要创建一个 composer 包,然后我想在任何地方安装这个包具有相同
当使用预配置的服务提供者元数据时,在 spring security 中,扩展元数据委托(delegate)是否应该有 2 个 beans 定义?一个用于 IDP 元数据,一个用于 SP 元数据?
我知道如何绑定(bind)单个类: public function register() { $this->app->bind('search', 'Laracasts\Search\Sear
我创建了扩展 XeroServiceProvide 的自定义服务提供程序,基本上,我有多个 Xero 帐户,我想更改两个配置参数值运行时 消费者 key 和 消费者 secret .有没有快速的方法。
我有一个小程序需要调用JAXP,具体是SAXParserFactory .现在,正如您从 Javadoc 中看到的那样,这在内部使用了服务提供者机制,如文档中所述 here : 具体来说,如果它在我的
我试图找出一个涉及 Spring Security 和 SAML 的问题。我们正在尝试使用 Spring Security (spring-security-core-3.1.1.RELEASE.ja
我需要创建一个 RESTful WCF 服务,它需要使用 OAuth 2.0 对调用者进行身份验证。过去一周我一直在学习 OAuth 和它的提供者实现,这些是我发现的资源,它们接近我想要的。 (1)
我的 someModule 模块有一个服务: someModule.provider('someService', function() { this.options = {}; th
在 view composer documentation 之后我为我的基本 View 创建了一个类 ComposerServiceProvider 和一个 ViewComposer。我想为我站点的管
我收到此错误: BindingResolutionException in compiled.php line 1029: Target [App\Models\Contracts\Repositor
我正在考虑使用 Oracle 数据库作为 Web 服务提供程序并通过 PL/SQL 存储过程实现 Web 服务逻辑的选项。我以前曾编写过存储过程代码,但我不确定我应该朝哪个方向发展才能使用最新的解决方
在 AngularJS 2.0 Heroes 教程解释中指出,如果一个子组件在其 @Component Providers 列表中包含一个服务,那么 Angular 将创建该服务特定于该子组件的单独实
我正在构建一个 Web 应用程序,它将使用 DotNetOpenAuth 提供一个 api 和一个授权服务。我找到了 this example关于如何使用已经存在的服务提供者进行授权,但我想要一个关于
我正在努力在 Websphere Liberty 服务器上启用 samlWeb-2.0。我需要使用我的雇主提供的现有身份提供商来实现服务提供商部分进行身份验证。 samlWeb-2.0 功能已安装并启
我是一名优秀的程序员,十分优秀!