好的,正如我在另一个问题中回答的AutoMoq
那样,默认情况下不使用 AutoFixture。这很好,通过设置和设置很容易解决ReturnsUsingFixture
。
但这可以通过自动夹具数据理论进行设置吗?
所以我们有一个自定义的 AutoDataAttribute,我将调用它[MyAutoData]
。在那里,我们调用并设置了一堆自定义项,例如AutoConfiguredMoqCustomization
,将其配置为生成 webapi 控制器,并注册许多自定义生成器。所以我们已经能够将几乎所有的样板配置提取到一些基本的配置文件中。我们甚至MyAutoData
为系统测试设置了属性,所以如果您要求,比如说,Id<Account>
它会使用实际的 webapi 调用创建一个新帐户并返回一个有效的帐户 ID。
但是您如何处理设置AutoMoq
方法返回的问题呢?这是一个例子:
[Theory, MyAutoData]
public async Task Test(Mock<ICqrsService> mockService, TheRequest request)
{
mockService.Setup(service => service.CreateAsync<TheRequest>(It.IsAny<TheRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(result); // or similar car with ReturnUsingFixture
/* now we can test */
}
在其他所有情况下,我们都能够将这种配置移入MyAutoData
(或它调用的类)。但是对于 AutoMoq,我看不出它应该如何工作。我们不能做固定装置。
有没有办法在 AutoFixture 生成项目之后但在将其交付给测试方法之前触发设置方法?或者有没有办法自定义 AutoMoq 行为以始终使用.ReturnsUsingFixture(fixture)
?还是我只是在想这个问题都错了?