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

时间:2018-04-17 13:47:27

标签: c# unit-testing generics autofixture automoq

public interface IResult
{
    bool Success { get; } 
}

public interface IResult<T> : IResult
{

}

使用AutoFixure和AutoMoq无论Success是什么类型,我都试图找到一种方法true始终T。使用IResult注册假名很容易,但这似乎不适用于IResult<T>

1 个答案:

答案 0 :(得分:5)

使用假实现

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

以及添加TypeRelay自定义

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

IResult<>的所有来电都将使用FakeResult<> Successtrue无论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(); } }

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

{{1}}