gpt4 book ai didi

moq - 使 AutoMoq 为方法返回夹具创建的值

转载 作者:行者123 更新时间:2023-12-03 21:31:05 26 4
gpt4 key购买 nike

我想探索我们是否可以通过设置 AutoMoq 创建的所有 Moq-mock 默认返回 Fixture 创建的值作为方法返回值来节省时间。

在进行如下测试时,这将是有益的:

[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();
}

最佳答案

绝对有可能,只需使用 AutoConfiguredMoqCustomization而不是 AutoMoqCustomization .模拟将使用夹具为其所有方法、属性和索引器 (*) 生成返回值。

属性将被急切地评估,而索引器/方法的返回值将在第一次调用时评估和缓存。

(*) 此规则有两个异常(exception) - 自定义无法自动设置通用方法或使用 ref 的方法。参数,如解释 here .您必须在 .ReturnsUsingFixture 的帮助下手动设置它们。方法。

关于moq - 使 AutoMoq 为方法返回夹具创建的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35269208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com