仅在为第二次 API 调用的测试中重新创建数据库时才获取 404 Not Found

我正在尝试为我继承的遗留代码创建 API 集成测试。

目前我有一段测试代码:

  1. 重新创建数据库(使用 Fluent Migrations)

  2. 启动网络应用程序 (Owin.Hosting)

  3. 调用 api 获取授权令牌

  4. 对授权端点进行 api 调用

如果我跳过第一步并只执行 2) 3) 4),它会完美地工作。

我还能够执行步骤 1) 2) 3)(因此 auth API 调用可以与包括的数据库重新创建一起使用),这有点奇怪。

我以为我的 web 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");

    }

}


繁星淼淼
浏览 91回答 1
1回答

潇潇雨雨

所以我将测试框架更改为 NUnit 并且它正在运行。我不知道为什么,XUnit 在运行时更改内容时是否存在一些问题?
打开App,查看更多内容
随时随地看视频慕课网APP