次のインターフェースがあります。
interface IManufacturing
{
IJobApi JobApi {get;}
}
interface IJobApi
{
IList<JobSpec> GetSpecs (string wo, string name);
}
IManufacturing を使用し、次のように GetSpecs() を呼び出すクラスがあります。
var specs = _manufacturing.JobApi.GetSpecs (wo, name);
私は自分のモックを次のように設定します:
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);
テストを実行すると、出力に「ジョブ API が呼び出されました」という文字列しか表示されません。そのため、GetSpecs() は嘲笑されず、実際に呼び出し元はスペックのリストを期待していたのに空の文字列を受け取ったためスローしました...
ここで犯人は何でしょうか?
ありがとう。