Autofixture.Automoq - 泛型使 bool 始终为真

Autofixture.Automoq - generics make bool always true

public interface IResult
{
    bool Success { get; } 
}

public interface IResult<T> : IResult
{

}

使用 AutoFixure 和 AutoMoq 我试图找到一种方法使 Success 始终 true,无论 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<>,它具有 Success 到 return true,无论 [=18 的类型是什么=].

用于测试模拟是否按预期工作的完整示例。

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