public interface IResult
{
bool Success { get; }
}
public interface IResult<T> : IResult
{
}使用AutoFixure和AutoMoq,我试图找到一种方法来使Success始终是true,而不管T是什么类型。在IResult中注册一个假很容易,但这似乎不适用于IResult<T>
发布于 2018-04-17 14:52:27
使用假实现
public class FakeResult<T> : IResult<T> {
public bool Success {
get { return true; }
}
}以及添加TypeRelay自定义
fixture.Customizations.Add(new TypeRelay(typeof(IResult<>), typeof(FakeResult<>)));所有对IResult<>的调用都将使用具有Success的FakeResult<>来返回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();
}
}https://stackoverflow.com/questions/49879885
复制相似问题