2つのインターフェースでMoqを使用しているOuter
とInner
、発砲できませんOuter.Inner.SomeEvent
。
public interface Outer
{
Inner Inner { get; }
}
public interface Inner
{
int Prop { get; set; }
event EventHandler PropChanged;
}
public void Test()
{
Mock<Outer> omock = new Mock<Outer>();
Mock<Inner> imock = new Mock<Inner>();
Console.WriteLine("Inner");
imock.Object.PropChanged += InnerPropChanged;
imock.Raise(m => m.PropChanged += null, EventArgs.Empty);
imock.Object.PropChanged -= InnerPropChanged;
// This has no effect.
//omock.Setup(m => m.Inner).Returns(imock.Object);
Console.WriteLine("Outer");
// Both the auto recursive and the explicit above produce the same behavior.
omock.SetupProperty(m => m.Inner.Prop, -1);
omock.Object.Inner.PropChanged += InnerPropChanged;
omock.Raise(m => m.Inner.PropChanged += null, EventArgs.Empty);
}
public void InnerPropChanged(object sender, EventArgs e)
{
Console.WriteLine(" InnerPropChanged");
}
呼び出し時の出力Test()
:
Inner
InnerPropChanged
Outer
Inner
サブスクライバーにのイベントを警告するにはどうすればよいですか?何もそれらを発射することができないようです。
Inner
編集-明確にするために、コンテキストからイベントを発生させることができるようにしたいOuter
ので、最終的な出力には次のものを含める必要があります。
Outer
InnerPropChanged