Unit testing Web单元测试找不到Url
我使用的是ASPNeboilerplate 5.1.0 在Unit testing Web单元测试找不到Url,unit-testing,xunit,aspnetboilerplate,Unit Testing,Xunit,Aspnetboilerplate,我使用的是ASPNeboilerplate 5.1.0 在ProjectName.Web.Tests中,我遇到了无法解决的情况 我已经使用[事实]或[理论]为我的控制器设置了web测试。 当我尝试使用webtestbase类中的GetResponseAsString(字符串url,HttpStatusCode expectedStatusCode=HttpStatusCode.OK)运行测试时。所有的测试都失败了 以下是我的测试示例: [Fact] public async T
ProjectName.Web.Tests
中,我遇到了无法解决的情况
我已经使用[事实]
或[理论]
为我的控制器设置了web测试。
当我尝试使用webtestbase类中的GetResponseAsString(字符串url,HttpStatusCode expectedStatusCode=HttpStatusCode.OK)运行测试时。所有的测试都失败了
以下是我的测试示例:
[Fact]
public async Task Index_Test()
{
//Act
var response = await GetResponseAsStringAsync(
GetUrl<HomeController>(nameof(HomeController.Index))
);
//Assert
response.ShouldNotBeNullOrEmpty();
}
我还有其他版本3.8.3和4.2.1中的aspnetboilerplate项目,web测试工作正常。因此,我不确定为什么服务器无法在我的控制器上找到操作方法
在项目名称中找到的服务测试。测试运行正常。我找到了罪魁祸首。我遇到的问题是,试图从一个aspnetboilerplate项目模板存储库中复制web单元测试项目,并更新所有引用和类名以匹配目标VS解决方案中的名称和命名空间
我在aspnetboilerplate github帐户上提交了一个类似的问题。
归根结底,事情就是这样
在与较新的项目经历相同的过程之后。我在图书馆里找到的
在方法中默认命名为AbpProjectNameWebTestBase.cs
的类文件
受保护的覆盖IWebHostBuilder CreateWebHostBuilder()
{
返回基地
.CreateWebHostBuilder()
.UseContentRoot(ContentRootFolder.Value)
.UseSetting(WebHostDefaults.ApplicationKey,typeof(AbpProjectNameWebModule.Assembly.FullName);
}
我错误地将AbpProjectNameWebModule
替换为AbpProjectNameTestModule
,而不是AbpProjectNameWebMvcModule
。这是试图使用应用程序服务单元测试项目作为web项目。因此,它找不到任何引用的URI,因此返回了httpStatusCode.NotFound
修复此引用之后。我开始得到与public void Configure(iaapplicationbuilder应用程序、IWebHostEnvironment env、iLogger工厂loggerFactory)
方法相关的异常
例如添加app.UseAuthentication()
和app.UseAuthentication()
以及需要添加中间件来为context.User(即app.UserMiddleware()
)提供ClaimsEntity和ClaimsPrincipal
现在,我可以像在以前的版本中一样运行web单元测试了。您还没有提供很多关于您的环境的信息,目前您假设每个人都是aspnet样板模板差异方面的专家。向我们展示更多代码:控制器是什么样子的?GetResponseAsString()方法做什么?您是否正在运行测试主机服务器?如果遇到断点,是否可以在浏览器中访问它?更新你的问题,如果你找到了答案,发布它,并在24小时后将其标记为已回答。
Message:
Shouldly.ShouldAssertException : response.StatusCode
should be
HttpStatusCode.OK
but was
HttpStatusCode.NotFound