Мне нужно добавить пользователя в каждый тест, чтобы я мог выполнить авторизованный запрос. Для этого я создаю общедоступный класс BaseRuntimeTest: IClassFixture, IDisposable, IAsyncLifetime .
Затем BaseRuntimeTest реализует:
Код: Выделить всё
public async Task InitializeAsync()
{
await AddAdminUserAsync(Factory.CreateClient());
}
public async Task DisposeAsync()
{
await DeleteAdminUserAsync(Factory.CreateClient());
}
Код: Выделить всё
public class AccountTests(RuntimeTestWebAppFactory factory) : BaseRuntimeTest(factory)
{
private readonly AccountHelper _accountHelper = new();
private readonly Fixture _fixture = new();
[Fact]
public async Task Accounts_GetAll_WhenMultipleAccountsExist_ReturnsAll_200()
{
// Arrange
var accounts = new List
{
_accountHelper.CreateAccount(_fixture.Create()),
_accountHelper.CreateAccount(_fixture.Create())
};
await ArrangeAccountRegistryAsync(accounts);
// Act
var response = await AdminAuthorizedClientHttp.GetAsync($"{Constants.Application.GetRuntimeApiUrl()}/accounts");
// Assert
var jArray = JArray.Parse(await response.Content.ReadAsStringAsync());
jArray.Should().HaveCount(accounts.Count);
((int)response.StatusCode).Should().Be(200);
}
[Fact]
public async Task Accounts_GetAll_WhenNoAccountExist_ReturnsEmpty_200()
{
// Arrange
await ArrangeAccountRegistryAsync([]);
// Act
var response = await AdminAuthorizedClientHttp.GetAsync($"{Constants.Application.GetRuntimeApiUrl()}/accounts");
// Assert
var jArray = JArray.Parse(await response.Content.ReadAsStringAsync());
jArray.Should().BeEmpty();
((int)response.StatusCode).Should().Be(200);
}
Похоже, DisposeAsync все еще выполняется, пока начинается выполнение следующего теста. Я что-то упустил?
Подробнее здесь: https://stackoverflow.com/questions/788 ... -intendend
Мобильная версия