im facing a problem with testing an web api Controller and an fake entity Framework context. If i debug the application and POST to AddProtectedAccountMember it works fine but under my unit test it fails because the navigation property "Members" is null.
[TestMethod]
public void GetProtectedAccountMember_ShouldReturnSameMember()
{
var context = new TestDatabaseContext();
var protectedAccountDTO = GetTestProtectedAccount();
var protectedACcountMemberDTO = GetTestProtectedAccountMember();
var protectedAccount = mapper.Map<ProtectedAccount>(protectedAccountDTO);
var protectedAccountMember = mapper.Map<ProtectedAccount>(protectedAccountDTO);
var controller = new ProtectedAccountsController(context);
var response1 = controller.NewProtectedAccount(protectedAccountDTO) as CreatedAtRouteNegotiatedContentResult<ProtectedAccountDTO>;
var response2 = controller.AddProtectedAccountMember(protectedAccountDTO.Id, protectedACcountMemberDTO) as CreatedAtRouteNegotiatedContentResult<ProtectedAccountMemberDTO>;
}
-
[ResponseType(typeof(ProtectedAccount))]
[Route("ProtectedAccounts/{id}/Members", Name = "ProtectedAccountMember")]
[HttpPost]
public IHttpActionResult AddProtectedAccountMember(int id, ProtectedAccountMemberDTO protectedAccountMemberDTO)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var protectedAccount = db.ProtectedAccounts.Find(id);
if(protectedAccount == null)
{
return NotFound();
}
ProtectedAccountMember member = mapper.Map <ProtectedAccountMember>(protectedAccountMemberDTO);
protectedAccount.Members.Add(member);
db.MarkAsModified(protectedAccount);
db.SaveChanges();
return CreatedAtRoute("ProtectedAccountMember", new { id = member.Id }, mapper.Map<ProtectedAccountMemberDTO>(member));
}
Aucun commentaire:
Enregistrer un commentaire