【发布时间】:2026-01-04 12:00:02
【问题描述】:
我有以下接口:
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);
在运行测试时,我只在输出中看到“JobAPI called”字符串。 因此,GetSpecs() 不会被嘲笑,并且调用者确实会抛出,因为它期望一个规范列表,而它收到一个空字符串......
这里的罪魁祸首可能是什么?
谢谢。
【问题讨论】:
标签: c# mocking fakeiteasy