首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单元测试是否将Cors添加到ServiceCollection中

单元测试是否将Cors添加到ServiceCollection中
EN

Stack Overflow用户
提问于 2019-06-20 11:23:31
回答 1查看 961关注 0票数 2

我试图对ServiceCollection是否包含Cors进行单元测试。

代码语言:javascript
运行
复制
public static class ServiceExtensions
{
    public static void ConfigureCors(this IServiceCollection services)
    {
        services.AddCors(options =>
        {
            options.AddPolicy("CorsPolicy",
                builder => builder.AllowAnyOrigin()
                .AllowAnyMethod()
                .AllowAnyHeader()
                .AllowCredentials());
        });
    }
}

下面是我到目前为止能写的东西,

代码语言:javascript
运行
复制
[Fact]
private void Extension_ShouldSetCors()
{
    IServiceCollection services = new ServiceCollection();
    services.ConfigureCors();
    Assert.True(services.Count > 0);
}

有更好的方法来测试吗?可能会得到策略名并测试它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-23 21:56:12

如果您想要编写依赖于在内部工作的烟雾测试,可以编写以下内容:

代码语言:javascript
运行
复制
[Fact]
public void Extension_ShouldSetCors()
{
    IServiceCollection services = new ServiceCollection();
    services.ConfigureCors();
    Assert.True(services.Count > 0);

    using (var scope = services.BuildServiceProvider().CreateScope())
    {
        var options = scope.ServiceProvider.GetService<IOptions<CorsOptions>>();
        Assert.NotNull(options);
        Assert.NotNull(options.Value);
        var expectedPolicy = options.Value.GetPolicy("CorsPolicy");
        Assert.True(expectedPolicy.AllowAnyOrigin);
        Assert.True(expectedPolicy.AllowAnyMethod);
        Assert.True(expectedPolicy.AllowAnyHeader);
        Assert.True(expectedPolicy.SupportsCredentials);
    }
}

请注意,微软自己使用了一种完全不同的方法,如果CORS按预期工作,则使用cmd和实际的在浏览器中运行JavaScript以进行测试

如果您是使用ASP.NET核心的集成测试设置,则可以通过检查模拟请求上的头来做类似的事情,减少对扩展方法内部的依赖,更好地测试实际关心的内容:响应中的头。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56684909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档