Как смоделировать параметр? - PullRequest
4 голосов
/ 28 июля 2011

Я скачал последний выпуск NSubstitute, 1.1.0, 21 мая 2011 года. До этого выпуска, похоже, NSub не поддерживал параметры. Похоже, что некоторая работа была проделана для обеспечения поддержки через промежуточный выпуск: NSub Google Group .

Итак, у меня небольшие проблемы с попыткой заставить все части работать. Я использую SystemWrapper для насмешки DirectoryInfo

Вот мой интерфейс:

    public interface INetworkPath
    {
        void SetPath(string NetworkPath);
        bool TryGetDirectoryInfo(out IDirectoryInfoWrap DirectoryInfo);
    }

... и тест:

public void SetNetworkPath_SetDirectoryInfo()
{
    var netPath = Substitute.For<INetworkPath>();
    netPath.SetPath("SomeNetworkPath");
    IDirectoryInfoWrap DirectoryInfo;

    netPath.TryGetDirectoryInfo(out DirectoryInfo)
           .Returns(d => {   // cannot convert lambda expression to type bool because it is not a delegate type
               d[1] = Substitute.For<IDirectoryInfoWrap>();  //  d[1] is read only
               return true;
           });

    Assert.IsNotNull(DirectoryInfo);
}

Есть ли способ смоделировать параметр out из интерфейса INetworkPath?

Обновление

Попробовал следующее: хотя он компилируется, DirectoryInfo возвращает ноль:

[Test]
public void SetNetworkPath_SetDirectoryInfo()
{
    var netPath = Substitute.For<INetworkPath>();
    netPath.SetPath("SomeNetworkPath");
    IDirectoryInfoWrap DirectoryInfo;

    netPath.TryGetDirectoryInfo(out DirectoryInfo)
           .Returns(d => { 
               d = (CallInfo)Substitute.For<IDirectoryInfoWrap>();
               return true;
           });

    Assert.IsNotNull(DirectoryInfo);
}

1 Ответ

2 голосов
/ 28 июля 2011

Я не верю, что реализация, которую вы ищете, была выпущена с 1.1, но сделана позже ( Ссылка и подтверждение поддержки ). Вам, вероятно, придется сделать код и собрать его самостоятельно.

...