Autofixture.Automoq - 泛型使bool始终如一

Dyl*_*Orr 4 c# generics moq autofixture automoq

public interface IResult
{
    bool Success { get; } 
}

public interface IResult<T> : IResult
{

}
Run Code Online (Sandbox Code Playgroud)

使用AutoFixure和AutoMoq 无论是什么类型,我都试图找到一种Success始终如一的方法.注册假货很容易,但似乎并不适用trueTIResultIResult<T>

Nko*_*osi 5

使用假实现

public class FakeResult<T> : IResult<T> {
    public bool Success {
        get { return true; }
    }
}
Run Code Online (Sandbox Code Playgroud)

以及添加TypeRelay自定义

 fixture.Customizations.Add(new TypeRelay(typeof(IResult<>), typeof(FakeResult<>)));
Run Code Online (Sandbox Code Playgroud)

所有这些都需要IResult<>将使用FakeResult<>有其Success返回true无论是什么类型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();
    }
}
Run Code Online (Sandbox Code Playgroud)