public interface IResult
{
bool Success { get; }
}
public interface IResult<T> : IResult
{
}
使用 AutoFixure 和 AutoMoq 我试图找到一种方法来制作Success
always true
,无论是什么类型T
。使用 注册假货很容易IResult
,但这似乎并不适用IResult<T>
public interface IResult
{
bool Success { get; }
}
public interface IResult<T> : IResult
{
}
使用 AutoFixure 和 AutoMoq 我试图找到一种方法来制作Success
always 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<>
which has itsSuccess
返回。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();
}
}