相关疑难解决方法(0)

需要为ApiControllers创建约定

我在测试中有一组工作命令性代码,我试图将其归结为一个基本的测试约定.

我的测试如下所示:

[Theory, BasicConventions]
public void GetVersionOnSiteVersionControllerReturnsASiteVersion(IFixture fixture)
{
    fixture.OmitAutoProperties = true;
    SiteVersion expected = fixture.Create<SiteVersion>();
    SiteVersion actual = null;

    var sut = fixture.Create<SiteVersionController>();

    var response = sut
        .GetSiteVersion()
        .ExecuteAsync(new CancellationToken())
        .Result
        .TryGetContentValue<SiteVersion>(out actual);

    actual.AsSource().OfLikeness<SiteVersion>().ShouldEqual(expected);
}
Run Code Online (Sandbox Code Playgroud)

我还有一个允许它工作的自定义,即通过设置HttpConfigurationHttpRequestMessage默认的非空值.

public class ApiControllerCustomization : ICustomization
{
    public void Customize(IFixture fixture)
    {
        var origin = fixture.OmitAutoProperties;
        fixture.OmitAutoProperties = true;
        var sut = fixture.Create<SiteVersionController>();
        sut.Configuration = fixture.Create<HttpConfiguration>();
        sut.Request = fixture.Create<HttpRequestMessage>();
        fixture.Inject<SiteVersionController>(sut);
        fixture.OmitAutoProperties = origin;
    }
}
Run Code Online (Sandbox Code Playgroud)

首先,这看起来很难看,但如果我使用Build <>().omit().with(config).with(request),它会关闭构建这些实例所需的automoq自定义.

其次,这仅适用于SiteVersionController.对于我所有的ApiControllers,我更倾向于概括一下(也许这是一个坏主意,但在我尝试之前我不会知道).

基本上我的约定如下: 对于所有ApiControllers,创建它们没有自动属性但是将http配置和请求消息属性设置为默认的非空值

c# autofixture

9
推荐指数
1
解决办法
980
查看次数

标签 统计

autofixture ×1

c# ×1