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>
使用假实现
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)