作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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
返回 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();
}
}
关于c# - Autofixture.Automoq - 泛型使 bool 始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49879885/
我是一名优秀的程序员,十分优秀!