编程语言
首页 > 编程语言> > c# – Autofixture.Automoq – 泛型使bool始终如一

c# – Autofixture.Automoq – 泛型使bool始终如一

作者:互联网

public interface IResult
{
    bool Success { get; } 
}

public interface IResult<T> : IResult
{

}

使用AutoFixure和AutoMoq无论T是什么类型,我都试图找到使成功始终为真的方法.使用IResult注册假是很容易的,但这似乎不适用于IResult< T>

解决方法:

使用假实现

public class FakeResult<T> : IResult<T> {
    public bool Success {
        get { return true; }
    }
}

以及添加TypeRelay自定义

 fixture.Customizations.Add(new TypeRelay(typeof(IResult<>), typeof(FakeResult<>)));

所有对IResult<>的调用将使用FakeResult<>哪个有成功返回trueno问题是什么类型的T.

测试模拟按预期工作的完整示例.

[TestClass]
public class AutoFixtureDefaultGeneric {
    [TestMethod]
    public void AutoFixture_Should_Create_Generic_With_Default() {
        // Arrange
        Fixture fixture = new Fixture();
        fixture.Customizations.Add(new TypeRelay(typeof(IResult<>), typeof(FakeResult<>)));

        //Act
        var result = fixture.Create<IResult<string>>();

        //Assert
        result.Success.Should().BeTrue();
    }
}

标签:c,unit-testing,autofixture,generics,automoq
来源: https://codeday.me/bug/20190607/1194798.html