gpt4 book ai didi

c# - FakeItEasy - 新修改器的问题

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

看来以下代码的行为与我预期的不同:

using FakeItEasy;
using Microsoft.VisualStudio.TestTools.UnitTesting;

[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
var derived = A.Fake<IDerived>();
A.CallTo(() => derived.Dependency).Returns(null);

IBase baseObj = derived;
Assert.IsNull(baseObj.Dependency); //Fails
}
}

public interface IDerived : IBase
{
new IDependency Dependency { get; }
}

public interface IBase
{
IDependency Dependency { get; }
}

public interface IDependency
{
}

fake it easy 不是返回 null,而是返回 IDependency 的假实例。也许是设计使然?无论如何,我将如何解决这个问题并确保 baseObj.Dependency 返回配置的内容?

最佳答案

这是正常行为。 IDerived 现在有两个成员。一种继承自IBase,一种定义在IDerived。

在您的测试方法中,您正在使用 FakeItEasy 设置 IDerived 中的值。

来自 IBase 的成员未设置。所以它得到 FakeItEasy 给它的默认值,这是一个模拟的 IDependency。

如果要设置,使用下面的代码:

IDerived derived = A.Fake<IDerived>();

IBase baseObj = derived;

A.CallTo(() => baseObj.Dependency).Returns(null);

Assert.IsNull(baseObj.Dependency); //No error here

在这段代码中,我们正在设置 IDerived 的另一个成员,这是在基接口(interface)中定义的依赖项。

关于c# - FakeItEasy - 新修改器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405776/

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