モック オブジェクトでプライベート メソッドをテストしようとしています。落ち着いてください、熊手を出しているのはわかっています。
これから言うことはすべて、REFACTORと怒鳴ることで答えられることをよく知っています。率直な答えが必要です。誰かが私の目を見て、これはできないと言ってください。これはググることができない問題なので、聞くだけでいいのです。
これが私が扱っているものです。
public class SecretManager
{
protected virtual string AwfulString { get { return "AWFUL, AWFUL THING"; }
public SecretManager()
{
//do something awful that should be done using injection
}
private string RevealSecretMessage()
{
return "don't forget to drink your ovaltine";
}
}
ここで私はそれをテストしようとしています。
var mgr = new Mock<SecretManager>();
mgr.Protected().SetupGet<string>("AwfulThing").Returns("");
var privateObj = new PrivateObject(mgr.Object);
string secretmsg = privateObj.Invoke("RevealSecretMessage");
Assert.IsTrue(secretmsg.Contains("ovaltine"));
そして例外:
System.MissingMethodException: Method 'Castle.Proxies.SecretManagerProxy.RevealSecretMessage' not found
私がやろうとしていることは、狂っていますが、可能ですか? それとも、単体テストが耐えるにはあまりにも傲慢なのでしょうか?