仅在为第二次 API 调用的测试中重新创建数据库时才获取 404 Not Found
Getting 404 Not Found only when re-creating database in tests for 2nd API call
我正在尝试为我继承的遗留代码创建 API 集成测试。
目前我有一段测试代码:
- 重新创建数据库(使用 Fluent Migrations)
- 启动网络应用程序(Owin.Hosting)
- 进行 api 调用以获取身份验证令牌
- api 调用授权端点
如果我跳过第一步只做 2) 3) 4).
有点奇怪的是我还能够执行步骤 1) 2) 3)(所以 auth API 调用包括数据库重建)。
我认为我的网站 api 工作不正常,但当我不重新创建数据库时,我可以执行基本路径。然后我想当我重新创建数据库时它可能根本不起作用,但我能够授权用户。我不知道我现在可以尝试什么。
[Collection("Database Create collection")]
public class RoleControllerTests : IDisposable
{
private readonly IDisposable _server;
private readonly string _url = new Configuration().ServerUrl;
public RoleControllerTests()
{
_server = WebApp.Start<Startup>(_url);
}
public void Dispose()
{
_server.Dispose();
}
[Fact]
public async Task basic_roles_should_exist_in_the_database()
{
// Arrange
var roleApi = RestClient.For<IRoleController>(_url);
IAuthorize auth = new Authorize();
roleApi.AuthenticationHeader = await auth.GetAuthenticationHeaderAsync();
// Act
var rolesData = await roleApi.List();
// Assert
rolesData.ShouldContain(x => x.Name == "User");
rolesData.ShouldContain(x => x.Name == "Displayer");
}
}
所以我已将测试框架更改为 NUnit,它正在运行。
我不知道为什么,XUnit 在运行时更改内容时是否存在一些问题?
我正在尝试为我继承的遗留代码创建 API 集成测试。
目前我有一段测试代码:
- 重新创建数据库(使用 Fluent Migrations)
- 启动网络应用程序(Owin.Hosting)
- 进行 api 调用以获取身份验证令牌
- api 调用授权端点
如果我跳过第一步只做 2) 3) 4).
有点奇怪的是我还能够执行步骤 1) 2) 3)(所以 auth API 调用包括数据库重建)。
我认为我的网站 api 工作不正常,但当我不重新创建数据库时,我可以执行基本路径。然后我想当我重新创建数据库时它可能根本不起作用,但我能够授权用户。我不知道我现在可以尝试什么。
[Collection("Database Create collection")]
public class RoleControllerTests : IDisposable
{
private readonly IDisposable _server;
private readonly string _url = new Configuration().ServerUrl;
public RoleControllerTests()
{
_server = WebApp.Start<Startup>(_url);
}
public void Dispose()
{
_server.Dispose();
}
[Fact]
public async Task basic_roles_should_exist_in_the_database()
{
// Arrange
var roleApi = RestClient.For<IRoleController>(_url);
IAuthorize auth = new Authorize();
roleApi.AuthenticationHeader = await auth.GetAuthenticationHeaderAsync();
// Act
var rolesData = await roleApi.List();
// Assert
rolesData.ShouldContain(x => x.Name == "User");
rolesData.ShouldContain(x => x.Name == "Displayer");
}
}
所以我已将测试框架更改为 NUnit,它正在运行。 我不知道为什么,XUnit 在运行时更改内容时是否存在一些问题?