Оказывается, что следующий код не ведет себя, как я бы ожидать:FakeItEasy - проблемы с новым модификатором
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
{
}
Вместо возвращения пустой, поддельный легко возвращает фальшивый экземпляр IDependency
. Возможно, по дизайну? Во всяком случае, как я могу обойти эту проблему и убедиться, что baseObj.Dependency
возвращает то, что было настроено?
Обратите внимание, что этот вопрос снова поднят как проблема 533 GitHub, [интерфейс Faking, который содержит свойство с новым модификатором и литье в базовый интерфейс, будет отвлекать результаты] (https://github.com/FakeItEasy/FakeItEasy/issues/ 533). Я ожидал, что большинство обсуждений состоится там сейчас. –
Хорошо, моя точка публикации на github в то время была скорее подачей ошибки. Хотя теперь мне кажется, что это запрос функции. –