我有一个带有一些简单Razor页面和Web控制器的ASP.NET核心项目。
我使用作为起点。我重新命名了项目名称,删除了MVC内容,并添加了一些自己的代码。一切都运转正常。
但是,在调用factory.CreateClient()时,集成测试会引发以下错误
Test Name: ToDo.Tests.Integration.Web.HomeControllerIndexShould.ReturnViewWithCorrectMessage
Test FullName: ToDo.Tests.Integration.Web.HomeControllerIndexShould.ReturnVi
我试图了解如何在ASP.NET Core6WebAPI控制器上进行集成测试。我试着跟踪所有的,所以我可以找到一些帖子和建议,但出于某种原因,我总是碰到指南中没有提到的错误。
EventControllerTests.cs
namespace UnitTests.ProjectToBeTested.Controllers
{
public class EventControllerTests
{
[Fact]
public async Task EventController_Post_RespondsOkIfRequestContainsCorr
我试着运行集成测试并得到这个错误。
System.InvalidOperationException:入口点在没有构建IHost的情况下退出。在Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.CreateHost() at Microsoft.Extensions.Hosting.HostFactoryResolver.<>c__DisplayClass10_0.b__0(String[] args)在Microsoft.AspNetCore.Mvc.Testing.DeferredHostBuil
我正在尝试使用WebApplicationFactory在CI中正确运行一些测试
当我们通过IDE运行这些测试时,它们会在本地通过,但它们会失败,因为
System.InvalidOperationException: Solution root could not be located using application root
当我们在CI中运行它们时。
在CI中,我们有一个名为integration_tests的目录,其中包含多个用于测试的dll文件,我们运行vstest命令来测试这些dll,但那里没有.sln文件。
我们的WebApplicationFactory是这样的:
fact
我有一个使用iOS构建的Xamarin.iOS应用程序。
我正在将应用程序迁移到.net6的过程中。
为了能够在本地构建我的应用程序,我显然需要安装.net6的SDK,还需要安装iOS工作负载,这是使用以下命令完成的:
dotnet install workload ios
现在,当我尝试使用DevOps机器在Azure macOS中构建应用程序时,它失败了:
error NETSDK1147: To install these workloads, run the following command: dotnet workload install ios [/Users/runner/wo
我运行的ASP.NET核心身份(UserManager<TUser>和那个爵士),支持EF核心商店。最近,我的应用程序中出现了一个错误,其中控制器端点导致了对UserManager<T>.UpdateAsync(...)的太多调用。
由于我已经设置了集成测试(使用了WebApplicationFactory<TStartup>设置和UseInMemoryDatabase(...)),所以我希望编写一个集成/冒烟测试,如果控制器端点超过其查询预算,就会警告我。
基本上,我很想写(但不能写)这个测试:
public class FooControllerTest
我有两个解决方案。
使用.NET Core3.1的Web
使用XUnit.NET和.NET Core3.1进行集成测试,该项目对Web项目有一个参考
这里有一个示例集成测试类。
public class CustomersControllerTests : IClassFixture<WebApplicationFactory<WebAPIProject.Startup>>
{
public CustomersControllerTests(WebApplicationFactory<WebAPIProject.S
在我的代码中,有一个地方需要根据输入类类型采取不同的操作。所以我写了两行来检查输入对象的类类型。
debugPrint("Let me know the next action: $action");
debugPrint((action is LoadPomodorosAction).toString());
输出是
I/flutter (24128): Let me know the next action: Instance of 'LoadPomodorosAction'
I/flutter (24128): false
这是什么意思?对象'ac
我的示例基于rollup.js基本示例:
我正在工作的项目需要更多的文件被包括和排除。(我知道如何排除路径使用“汇总-插件-忽略”插件。)
如何告诉rollup.js在不更改源文件的情况下将文件添加到导入列表中(就像我在源代码中导入它们一样)。?
我试着用公共插件
var commonjs = require('rollup-plugin-commonjs');
var include = ["D:\\...abs_path....\\components\\Auth\\FormLogin.jsx"]
commonjs( {"include":
我正在向ASP.NET核心web服务添加集成测试(请参阅微软在Integration tests in ASP.NET Core上的文章,我已经扩展了WebApplicationFactory,将数据库提供者替换为内存中的数据库。但是,ASP.NET核心web服务包括默认情况下启用的其他服务。 每个服务都可以通过服务对象停止/禁用,但对WebApplicationFactory.ConfigureServices()上的GetRequiredService()的调用会抛出System.InvalidOperationException。 有没有人知道有没有办法禁用默认服务?
我需要为docker容器中的所有用户和进程设置一些环境变量。它应该在容器启动时设置,而不是在Dockerfile中设置,因为它取决于运行环境。 所以简单的Dockerfile FROM ubuntu
RUN echo 'export TEST=test' >> '/root/.bashrc' 适用于交互式会话docker run -ti test bash,然后是env,还有TEST=test 但是当使用docker run -ti test env时,没有TEST 我在试着 RUN echo 'export TEST=test'
因此,对于system32二进制文件,dumpbin将报告:
...
6178 entry point (0000000140006178)
...
SECTION HEADER #1
.text name
63E6 virtual size
1000 virtual address (0000000140001000 to 00000001400073E5)
6400 size of raw data
400 file pointer to raw data (00000400 to 000067FF)
但是RVA 6178处的入口点映
我目前正在使用.net6构建一个API示例,并且正在跟踪使用docker来运行API。
我的停靠文件如下所示:
# Grab the app package and create a new build
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env
# Let's add all the files into the app directory
WORKDIR /app
# Copy everything
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Bu
我想做一个集成测试(使用WebApplicationFactory)来测试我的路由配置和序列化层。 我希望测试结果(大致)是这样的: var controllerSpy = new BooksControllerSpy(201);
var factory = new WebApplicationFactory<Startup>();
var client = factory.WithWebHostBuilder(builder =>
{
// ???? inject controllerSpy into con
我想了解Polly如何重新尝试通过Startup.ConfigureServices()配置的polly可以进行测试。
ConfigureServices
中配置了Polly策略。
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient<IHttpClientService, HttpClientService>()
.SetWaitAndRet
我有一个最小的.NET 6 API,我正在使用WebApplicationFactory<T>进行集成测试。通常,在我的测试中,我会大致这样做:
using TestServer server = new WebApplicationFactory<Program>().Server;
using HttpClient client = server.CreateClient();
// ... do stuff with the client
但是,我也想直接测试我的控制器(主要是为了在测试期间使用控制器本身中的调试器),在从工厂获得一个带有DI优点的控制器实例之后,
我将所有与数据相关的类、接口、配置等保存在一个单独的库项目中,这样它就可以很容易地用于我需要的任何其他项目(API、WebAssembly、Mobile、Server页面等)。
我已经将所有项目从解决方案转换为.NET6。它们都像以前一样工作和构建,除了数据库,它给了我以下错误:Program using top-level statements must be an executable.
如何为.NET 6库编写新的.NET 6 Program.cs文件?
无法工作的新Program.cs文件:
using FlasherData.Context;
using FlasherData.Re