问题标签 [asp.net-core-testhost]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1832 浏览

asp.net-core - 如何配置 ASP.Net TestHost 以使用 OpenId Connect?

我有一个配置为发布和验证 JWT 不记名令牌的 ASP.Net Core 应用程序。当站点托管在 Kestrel 中时,客户端能够成功检索不记名令牌并使用令牌进行身份验证。

我还有一套使用 Microsoft.AspNetCore.TestHost.TestServer 的集成测试。在添加身份验证之前,测试能够成功地向应用程序发出请求。添加身份验证后,我开始收到与访问开放 ID 配置有关的错误。我看到的具体例外是:

根据我的研究,当权威设置为与托管服务器不同的主机时,有时会触发这种情况。例如,Kestrel 默认在http://localhost:5000运行,这是我最初设置的权限,但是在将其设置为 TestServer 正在模拟的 ( http://localhost ) 时,它仍然给出相同的错误. 这是我的身份验证配置:

奇怪的是,尝试直接从集成测试中访问 URL 可以正常工作:

在此处输入图像描述

那么如何配置 ASP.Net TestServer 和 OpenId Connect 基础架构以协同工作?

=== 编辑 ====

稍微反思一下,我想到问题是 JWT 授权内部正在尝试向http://localhost端口 80 发出请求,但它并没有尝试使用 TestServer 发出请求,而是因此寻找一个真正的服务器。由于没有,它永远不会进行身份验证。看起来下一步是看看是否有某种方法可以关闭权威检查或以某种方式扩展基础设施以允许它使用 TestServer 作为主机。

0 投票
2 回答
65 浏览

asp.net-core - 在 Team Services 构建过程中运行测试时出现问题

我在我工作的公司设置了一个构建服务器。此构建服务器与 Visual Studio Team Services 交互地工作。

构建效果很好,发布也是如此。我遇到的问题是能够以不同的用户身份运行“dotnet test”。

这是必需的,因为当前运行代理的用户是服务帐户。它可以访问 IIS 并能够将文件移动到需要的位置。但它无权访问数据库。

由于我们使用了一些集成测试,因此在连接到数据库时会出错,因为它正在尝试以服务用户身份连接。

到目前为止,我还没有找到一种以不同用户身份运行“dotnet test”的方法,特别是有权查询数据库的用户。

我尝试使用 VSTS 任务“在远程机器上运行 Powershell”,因为它可以让我提供用户名和密码。但它似乎在尝试远程连接到自身时遇到了问题(这可能是可以理解的)。

我很茫然。我不知道如何让它工作。除了让服务用户能够在数据库上运行这些查询。

任何帮助是极大的赞赏!

0 投票
1 回答
1646 浏览

c# - 找不到 IdentityServer4 测试服务器

我正在编写一个测试以identity server4使用 Microsoft.AspNetCore.TestHost获取令牌

然后 disco.Error 出现以下错误

连接到 http://localhost:5001/.well-known/openid-configuration时出错:发送请求时出错。

我错过了什么?

0 投票
1 回答
472 浏览

visual-studio-2015 - VS2015 测试资源管理器未检测到 AspNetCore 项目中的特征

出于某种原因,我的 VS2015 社区版中的测试资源管理器没有检测到 AspNetCore 测试项目中的特征。我正在使用 mstest testRunner。

尽管有适当的 TestCategory 注释,所有测试方法都进入“无特征”类别。

  1. 我已经尝试了单个注释和几个注释(实际上我正在尝试利用)。
  2. 我试图将它们分配给测试类和测试方法。
  3. 我正在为与测试相关的依赖项使用最新的 nuget 包:
    1. "dotnet-test-mstest": "1.1.2-preview",
    2. "MSTest.TestFramework": "1.1.11",
    3. "Microsoft.AspNetCore.TestHost": "1.1.0",

我究竟做错了什么?

0 投票
1 回答
527 浏览

asp.net-core - System.Net.Http.HttpClient Microsoft.AspNetCore.TestHost.TestServer.CreateClient()

由于某些原因,我在使用 package.json 时无法运行任何测试Microsoft.AspNetCore.TestHost。这是抛出的异常:

任何想法?

0 投票
1 回答
1961 浏览

asp.net-core - 动态加载 ASP.NET Core 程序集

我正在尝试动态加载包含 ASP.NET CoreStartup类的 .NET Core DLL。然后我想实例化这个Startup类并将它交给TestHostAPI,这样我就可以在内存中启动站点。我编写了以下代码:

但是,这会引发TypeLoadException何时assembly.ExportedTypes被调用。完整的堆栈跟踪:

System.TypeLoadException 发生 HResult=0x80131522
Message=Method 'ConfigureServices' in type 'Foo.Startup' from assembly 'Foo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 没有实现。Source= StackTrace:在 System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly 程序集,ObjectHandleOnStack retTypes)在 System.Reflection.RuntimeAssembly.GetExportedTypes()

我认为加载 ASP.NET Core 和其他第三方 DLL(如 Newtonsoft.Json)时遇到问题。

0 投票
0 回答
1457 浏览

c# - 用于集成测试的 ASP.NET Core WebAPi、TestHost 和 [FromBody] 参数

我有一个已经在使用的 ASP.NET 核心 WebAPI 项目,我想开始自动化集成测试。

控制器只有基本的:

我正在使用 Microsoft.AspNetCore.TestHost 创建客户端和服务器以运行集成测试,但是当我想通过客户端发送有效负载时,WebApi 上的控制器找不到参数标记为 [FromBody]。我已经测试过邮递员在 post 方法的主体上发送一个字符串并且工作正常,那么,我做错了什么?

0 投票
0 回答
125 浏览

azure - AspNetCore.TestHost 是否支持 Azure Active Directory?

我正在尝试使用Microsoft.AspNetCore.TestHostAzure Active Directory 保护的 WebAPI 进行测试。我可以使用 PostMan 从 Azure AD 的 oauth2/token 端点获取不记名令牌,并在“/api/Values”上调用 HTTP GET。但是,当我对 TestHost 服务器执行相同操作时,我总是会收到 401 未经授权的错误。

我已将我的 TestHost 配置为使用内置于我的 ASP.NET Core WebAPI 项目中的 Startup 类(这是在您使用标准模板并选择 Azure Active Directory 作为身份验证提供程序时默认生成的类)。

我尝试了两种附加不记名令牌的方法。

第一种方法,使用我从 TestServer 生成的客户端的 DefaultRequestHeaders:

第二种方法是将标头附加到请求本身:

但是,这两者都获得了未经授权的 401。

我使用与在 PostMan 中相同的方法来获取令牌,除了在我的自动化单元测试中的代码中。

此代码生成一个令牌。它正在产生与我正在做的相同的邮递员职位。

使用邮递员获取令牌

使用相同的技术在 IIS Express 托管的 WebAPI 上执行 HTTP GET 是可行的。

带有承载令牌的 WebAPI 调用也可以工作

我怀疑 AspNetCore.TestHost 不支持这一点,或者我没有做任何事情来正确配置它以点亮我在 IIS Express 上调试时正在工作的 Azure Active Directory 配置,但文档非常简单。

0 投票
0 回答
555 浏览

c# - AspNetCore.TestHost 中的路由取决于 Startup.cs 位置?

我正在尝试使用 Microsoft.AspNetCore.TestHost 测试我的 ASP.NET Core Web 应用程序。它以这种方式工作正常(结果状态为 200):

在这种情况下,将使用 API 项目中真正的 Startup 类。

但是,我不想在集成测试中使用真正的 Startup 类。主要原因是需要模拟一些在应用程序启动期间连接的东西。例如,要使用的数据库服务器。它可以通过在 Startup.cs 中定义一个虚拟方法以非常优雅的方式完成:

然后我创建一个新类,它继承自原始的 Startup 类并覆盖此方法以使用 Sqlite、内存数据库或其他任何东西:

如果新类在同一个 API 项目中,这也适用于 TestHost。

显然,我不希望用于测试的此类存在。但是如果我将它移动到集成测试项目并在那里创建一个 TestServer,同样的测试会失败,因为结果的状态为 404。为什么会发生这种情况?它仍然继承自 API 项目中的 Startup 类。因此,无论 TestStartup 类在哪里,我都希望所有路由都能正常工作。它可以以某种方式解决吗?

0 投票
3 回答
4529 浏览

c# - 使用 ClientWebSocket .net 核心测试 TestHost.WebSocketClient

我已经按照这个这个这个教程在 .net 核心中构建了一个 WebSocket Web 应用程序。现在我正在尝试使用 Microsoft.AspNetCore.TestHost 对此进行一些集成测试

我创建 WebSocket 的方式

并且 websocket 客户端的创建是在下面的代码中完成的

local是 websocket 服务器上的路径名

启动.cs

无论如何,连接会产生以下错误

我的问题是如何要求ClientWebSocket连接TestHost.WebSocketClient