[英]When doing Moq in webapi, why my contentResult is always null
[英]Why is my Moq not returning null?
我的 Moq 正在返回我不期望的数据。
var artist = new Artist();
artist.Id = "4576";
var deserializer = Mock.Of<IXmlDeserializer<Album>>(
d => d.Deserialize("foo").Artist == artist);
Assert.IsNull(deserializer.Deserialize(null));
上述测试失败。
真正令人费解的是 mock 返回一个 Mock 但那
Assert.AreEqual("4576", deserializer.Deserialize(null).Artist.Id)
返回真。
就好像我的模拟为未指定的参数(在这种情况下为 null)返回的“默认值”在某种程度上受到了我在用“foo”调用时告诉它返回的内容的影响。
你可以写:
var artist = new Artist { Id = "4576" };
var mock = new Mock<IXmlDeserializer<Album>>();
mock.Setup(x => x.Deserialize(It.Is<string>(i => i == "foo"))).Returns(new Album() { Artist = artist });
var deserializer = mock.Object;
Assert.IsNull(deserializer.Deserialize(null));
Assert.IsNotNull(deserializer.Deserialize("foo"));
或者使用 Mock.Of() 语法,上面将是:
var artist = new Artist { Id = "4576" };
var deserializer = Mock.Of<IXmlDeserializer<Album>>(d => d.Deserialize(It.Is<string>(i => i == "foo")) == Mock.Of<Album>(album => album.Artist == artist));
Assert.IsNull(deserializer.Deserialize(null));
Assert.IsNotNull(deserializer.Deserialize("foo"));
Assert.AreEqual("4576", deserializer.Deserialize("foo").Artist.Id);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.