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