Przeprowadzam test jednostki mojej trasy PostMyModel
. Jednak w ciągu PostMyModel()
użyłem linii Validate<MyModel>(model)
, aby ponownie zweryfikować mój model po jego zmianie. Używam kontekstu testu, aby nie być zależnym od bazy danych dla testów jednostkowych. Pisałem kontekst badań i metody POST poniżej:Sprawdzanie poprawności kończy się niepowodzeniem w testach jednostkowych
test Context
class TestAppContext : APIContextInterface
{
public DbSet<MyModel> MyModel { get; set; }
public TestAppContext()
{
this.MyModels = new TestMyModelDbSet();
}
public int SaveChanges(){
return 0;
}
public void MarkAsModified(Object item) {
}
public void Dispose() { }
}
metody POST
[Route(""), ResponseType(typeof(MyModel))]
public IHttpActionResult PostMyModel(MyModel model)
{
//Save model in DB
model.status = "Waiting";
ModelState.Clear();
Validate<MyModel>(model);
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MyModels.Add(model);
try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (MyModelExists(model.id))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DisplayMyModel", new { id = model.id }, model);
}
Gdy linia Validate<MyModel>(model)
działa, pojawia się błąd:
System.InvalidOperationException: ApiController.Configuration must not be null.
Jak mogę to poprawić?
może być skomplikowany z: controller.Request = new HttpRequestMessage(); controller.Request.Properties ["MS_HttpConfiguration"] = new HttpConfiguration(); – ccook