Je rencontre des problèmes étranges avec FakeItEasy.FakeItEasy ne trouve pas d'appel bien qu'il soit là
Imaginez la suite méthode de test unitaire:
[TestMethod]
public void DeletePerson_WhenCalled_ThenPersonIsDeleted()
{
const int personId = 24;
var commonParam = new CommonParam();
this.testee.DeletePerson(commonParam, personId);
A.CallTo(() => this.personRepository.DeletePersons(commonParam, new[] {personId }, false)).MustHaveHappened(Repeated.Exactly.Once);
A.CallTo(() => this.personRepository.SaveChanges()).MustHaveHappened(Repeated.Exactly.Once);
}
Le testee.DeletePerson
-method ressemble à ceci:
public ResultatModel DeletePerson(CommonParam commonParam, int personId)
{
this.personRepository.DeletePersons(commonParam, new[] { personId });
this.personRepository.SaveChanges();
}
Et le personRepository.DeletePersons
(mais celui-ci est feignait par fakeiteasy ...):
public void DeletePersons(CommonParam commonParam, IEnumerable<int> ids, bool hardRemove = false)
{
var persons = Entities.per_person.Where(e => ids.Contains(e.personId)
&& (e.accountId == null || e.accountId == commonParam.AccountId)).ToList();
if (hardRemove)
{
Entities.per_person.RemoveRange(persons);
}
else
{
persons.ForEach(person =>
{
person.geloescht = true;
person.mutationsBenutzer = commonParam.DbIdent;
person.mutationsDatum = DateTime.Now;
});
}
}
C'est la raison pour laquelle le test échoue
Méthode d'essai DataService.Test.PersonServiceTest.DeletePerson_WhenCalled_ThenPersonIsDeleted a jeté exception: FakeItEasy.ExpectationException:
Assertion a échoué pour l'appel suivant: RepositoryContract.IPersonRepository.DeletePersons (commonParam: Commons.CommonParam, ids: Système. Int32 [], hardRemove: Faux) DEVRAIENT trouver exactement une fois, mais trouvé # 0 fois parmi les appels: 1: RepositoryContract.IPersonRepository.RequestInfo = Faked Commons.Session.RequestInfo 2: RepositoryContract.IPersonRepository.DeletePersons ( commonParam : Commons.CommonParam, ids: System.Int32 [], hardRemove: Faux) 3: RepositoryContract.IPersonRepository.SaveChanges()
Pourquoi pas le test?
Est-ce que le new[] { ... }
est un problème?
Merci à l'avance
Hmm êtes-vous sûr? Je veux dire que le 'new [] {...}' est un 'IEnumerable' aussi pas? J'ai essayé de changer les appels à la nouvelle liste {...} 'mais cela ne fonctionne toujours pas :-( –
xeraphim
Il est en cours d'exécution, il n'est pas dans la compilation. . – dbencs