Добрый день! Пишу тест для контроллера AccountController который генерируется при создании проекта. Когда запускаю проект и вручную передаю данные работает без ошибок. Но при интеграционном тестировании выдает ошибку на null когда создается класс ApplicationUser.
Вот метод который создает пользователя
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
return BadRequest(ModelState);
// вот здесь выдается ошибка на null
var user = new ApplicationUser()
{
UserName = model.Email,
Email = model.Email,
PhoneNumber = string.IsNullOrEmpty(model.PhoneNumber) ? string.Empty : model.PhoneNumber
};
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
return GetErrorResult(result);
if (model.OwnerId.HasValue)
{
if (!model.OwnerId.Value.Equals(User.Identity.GetUserId<int>()))
return Unauthorized();
await UserManager.AddToRoleAsync(user.Id, "user");
}
else
await UserManager.AddToRoleAsync(user.Id, "admin");
return Ok();
}
Именно при создании класса выдается ошибка. Но внутри тут кроме присвоения значения ничего нет. В конструкторе тоже ничего не задано.
А это тест
[TestClass]
public class AccountControllerTest
{
protected TestServer Server;
[TestInitialize]
public void Setup()
{
Server = TestServer.Create(app =>
{
HttpConfiguration config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
});
}
[TestCleanup]
public void TestDispose()
{
if(Server != null)
Server.Dispose();
}
[TestMethod]
public async Task Register()
{
var registerBindingModel = new RegisterBindingModel()
{
PhoneNumber = "+71231234567",
Password = "Example_123456",
ConfirmPassword = "Example_123456",
Email = "example@mail.com"
};
string jsonContent = JsonConvert.SerializeObject(registerBindingModel);
var response = await Server.HttpClient.PostAsync("api/Account/Register", new StringContent(jsonContent, Encoding.UTF8, "application/json"));
var result = response.Content.ReadAsStringAsync().Result;
Console.Out.WriteLine("Http operation unsuccesfull");
Console.Out.WriteLine($"Status : {response.StatusCode}");
Console.Out.WriteLine($"Reason : {response.ReasonPhrase}");
Console.Out.WriteLine($"Content: {result}");
Console.Out.WriteLine(response);
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode, result);
}
}
Подозреваю что у меня с тестом что то не так. Не правильно пишу тест.