我想探讨一下,我们是否可以通过设置AutoMoq创建的所有Moq模拟值作为方法返回值来节省时间。
在进行如下测试时,这将是有益的:
[TestMethod]
public void Client_Search_SendsRestRequest()
var client = fixture.Create<Client>();
// Could be removed by implementing the mentioned functionality
Mock.Of(JsonGenerator).Setup(j => j.Search(It.IsAny<string>())).Returns(create("JsonBody")));
client.Search(fixture.Create("query"));
Mock.Of(client.RestClient).Verify(c => c.Execute(It.IsAny<RestRequest>()));
Mock.Of(client.RestClient).Verify(c => c.Execute(It.Is<RestRequest>(r => record(r.Body) == record(client.JsonGenerator.Search(query)))));
}请注意,生成的值必须缓存在(?)代理程序,我们想要相同的值“冻结”,以检查。此外,使用Setup设置模拟应该覆盖创建的值。
那么,我们如何修改AutoMoq模拟来做到这一点呢?
验证它是否有效的简单测试可以是:
[TestMethod]
public void MockMethodsShouldReturnCreatedValues()
{
Guid.Parse(new Fixture().Create<ITest>().Test());
}
public interface ITest
{
string Test();
}发布于 2016-02-08 13:23:23
当然可以,只需使用AutoConfiguredMoqCustomization而不是AutoMoqCustomization即可。模拟将使用该夹具为其所有方法、属性和索引器(*)生成返回值。
属性将被急切地计算,而索引器/方法的返回值将在第一次调用时被计算和缓存。
(*)这条规则有两个例外--正如解释的ref那样,定制不能自动设置带有这里参数的通用方法或方法。在.ReturnsUsingFixture方法的帮助下,您必须手动设置它们。
https://stackoverflow.com/questions/35269208
复制相似问题