Je les interfaces suivantes:Comment se moquer d'une interface renvoyée en tant que propriété d'un autre simulacre?
interface IManufacturing
{
IJobApi JobApi {get;}
}
interface IJobApi
{
IList<JobSpec> GetSpecs (string wo, string name);
}
J'ai une classe qui utilise IManufacturing et appelle GetSpecs() comme ceci:
var specs = _manufacturing.JobApi.GetSpecs (wo, name);
je configurer mes simulacres comme:
var jobApi = A.Fake<IJobApi>();
A.CallTo (() => jobApi.GetSpecs (It.IsAny<string>(), It.IsAny<string>()))
.Invokes (() => System.Diagnostics.Trace.WriteLine("GetSpecs called!"))
.Returns (new List<JobSpec>
{
new JobSpec("blablabla", "0.125", "something")
});
var manufacturing = A.Fake<IManufacturing>();
A.CallTo (() => manufacturing.JobAPI)
.Invokes (() => System.Diagnostics.Trace.WriteLine ("JobAPI called!"))
.Returns (jobApi);
Lors de l'exécution du test, je vois seulement la chaîne "JobAPI appelée" dans la sortie. Ainsi, le GetSpecs() ne se moque pas et en effet l'appelant jette parce qu'il attendait une liste de spécifications alors qu'il recevait une chaîne vide ...
Quel pourrait être le coupable ici?
Merci.
+1 pour l'honnêteté. Je pense que les gens peuvent encore apprendre de choses comme ça. –