c# – Autofixture.Automoq – 泛型使bool始终如一
作者:互联网
public interface IResult
{
bool Success { get; }
}
public interface IResult<T> : IResult
{
}
使用AutoFixure和AutoMoq无论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<>哪个有成功返回trueno问题是什么类型的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();
}
}
标签:c,unit-testing,autofixture,generics,automoq 来源: https://codeday.me/bug/20190607/1194798.html