Sto eseguendo un test unitario del mio itinerario PostMyModel
. Tuttavia, all'interno di PostMyModel()
ho utilizzato la riga Validate<MyModel>(model)
per riconvalidare il mio modello dopo che è stato modificato. Sto usando un contesto di test, in modo da non dipendere dal db per i test unitari. Ho inviato il contesto di prova e il metodo post qui sotto:Convalida esito negativo in test unità
test Contesto
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() { }
}
Messaggio Metodo
[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);
}
Quando la linea Validate<MyModel>(model)
corre, ottengo l'errore:
System.InvalidOperationException: ApiController.Configuration must not be null.
Come posso correggerlo?
potrebbe essere più semplice con: controller.Request = new HttpRequestMessage(); controller.Request.Properties ["MS_HttpConfiguration"] = new HttpConfiguration(); – ccook