Я скачал последний выпуск 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);
}