我有一组测试正在验证与外部 API 的合同。我希望测试类实现合同接口,以便如果它被更改,测试类本身会强制为任何新方法编写测试。
所以像
public interface IExternalThing {
Dictionary<string, int> GetSomeValues(int id);
}
[TestFixture]
public class ContractVerification : IExternalThing {
private realExternalThing = new ExternalThing();
private static IEnumerable GetValuesSource {
get
{
yield return new TestCaseData(0).Returns(
new Dictionary<string, int> {
{"thing", 1}
}
);
}
}
[Test]
[TestCaseSource("GetValuesSource")]
public Dictionary<string, int> GetSomeValues(int id) {
return realExternalThing.GetSomeValues(id);
}
}
到目前为止,这种方法一直有效,但由于此方法返回 Dictionary NUnit 报告失败并显示以下消息:
> Expected and actual are both
> <System.Collections.Generic.Dictionary`2[System.String,System.Int32]>
> with 1 elements
我想我可以用另一种方式来解决这个问题,但如果我可以让 NUnit 进行测试Is.EquivalentTo
而不是简单的相等,那就太棒了。
那可能吗?