非公開メンバーのテストが悪いと見なされることは知っていますが、それでも機能しないのはなぜですか? メッセージとともにスローArgumentException
されます: メンバーConnect
が存在しません
public class FtpHelper : IFtpHelper
{
public FtpHelper(ISignalRLogger signalRLogger, IDirectoryWrap directoryWrap = null) {
... some code
}
protected virtual IFtpClient Connect(string ftpPath) {
... some code
}
}
public class TestFtpHelper
{
[Fact]
public void Calls_connect(){
var signalrMq = new Mock<ISignalRLogger>();
var clientMq = new Mock<FtpHelper>(
MockBehavior.Strict, new { signalRLogger = signalrMq.Object });
clientMq.Protected().Setup<IFtpClient>("Connect",new { ftpPath = ""})
.Returns(It.IsAny<IFtpClient>()); // That doesn't work
}
}
UPD:ああ、初期化の最後の行の前でさえ、それclientMq
を使用しようとするclientMq.Object
と、このメッセージで例外がスローされることに気付きました:指定された引数の一致するコンストラクターがモックされた型で見つかりませんでした。デフォルト値を持つその奇妙なコンストラクターと関係があると思います