Получение 404 не найдено только при повторном создании базы данных в тестах для второго вызова API - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь создать интеграционные тесты API для унаследованного кода.

В настоящее время у меня есть часть кода тестирования:

  1. пересоздать базу данных (используя Fluent Migrations)
  2. запускает веб-приложение (Owin.Hosting)
  3. делает вызов API для получения токена аутентификации
  4. делает вызов API для авторизованной конечной точки

Это прекрасно работает, если я пропущу первый шаг и сделаю только 2) 3) 4).

Немного странно, что я также могу выполнять шаги 1) 2) 3) (поэтому вызов API auth работает с восстановлением базы данных).

Я думал, что мой веб-интерфейс не работает должным образом, но я могу сделать базовый путь, когда не воссоздаю базу данных. Тогда я подумал, может быть, это не работает вообще, когда я воссоздаю базу данных, но я могу авторизовать пользователя. Понятия не имею, что я могу попробовать сейчас.

[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");
    }
}

1 Ответ

0 голосов
/ 24 июня 2019

Итак, я изменил среду тестирования на NUnit, и она работает.Я понятия не имею, почему, у XUnit есть некоторые проблемы с изменением вещей во время выполнения?

...