gpt4 book ai didi

c# - FakeItEasy:在不指定类型的情况下伪造对泛型方法的调用

转载 作者:太空宇宙 更新时间:2023-11-03 12:46:37 24 4
gpt4 key购买 nike

我有一个类型依赖于通过通用方法执行查询的外部组件。这是正在播放的内容的简化版本:

public class UnitUnderTest
{
private IQueryEngine _engine;

public UnitUnderTest(IQueryEngine engine)
{
_engine = engine;
}

public OutputType DoSomething()
{
_engine.Query<ExternalType>(...);
_engine.Query<InternalType>(...);
}
}

public interface IQueryEngine
{
IEnumerable<T> Query<T>(string conditions);
}

我尝试测试的 DoSomething 方法调用 IQueryEngine 两次。

它第一次使用我可以从测试中访问的类型调用它,所以我使用 A.CallTo 来模拟它没有问题。

但随后它使用我无法访问的类型参数(它是一个内部 类型)第二次调用。

现在我的测试失败了,因为 DoSomething 不希望从对 _engine.Query 的调用中返回 null,但我无法构造要返回的正确类型的对象.

如何模拟这个调用?

最佳答案

这听起来像是对 InternalsVisibleTo 属性的完美使用。只需将内部类型的实例添加到您的程序集,并将您的测试程序集作为值。

关于c# - FakeItEasy:在不指定类型的情况下伪造对泛型方法的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37076013/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com