5

StructureMapに付属しているMoqAutoMockerクラスを使用しようとしていますが、その使用方法の例が見つかりません。私が続けなければならないのは、RhinoMocksを使用するStructureMapサイトの例です

私がやろうとしているのは、Getメソッドを使用して自動モック/注入された依存関係の1つへの参照を取得することです。上記のリンクによると、私はこのようなことをすることができるはずです

    // This retrieves the mock object for IMockedService
    autoMocker.Get<IMockedService>().AssertWasCalled(s => s.Go());

Get関数がRhinoMocksモックオブジェクトへの参照を返すことを示すAssertWasCalledの使用方法に注意してください。MoqAutoMockerを使用すると、これと同じコードが機能しません。

コンストラクターのISecurityServiceに依存するクラスSignInControllerがあります。例ではRhinoAutoMockerが使用されているようにMoqAutoMockerを使用すると、これを実行できるはずです...

var autoMocker = new MoqAutoMocker<SignInController>();
autoMocker.Get<ISecurityService>().Setup(ss => ss.ValidateLogin
(It.IsAny<string>(), It.IsAny<string>())).Returns(true); 

しかし、問題は、セットアップメソッドにアクセスできないことです。この場合、autoMocker.Getの呼び出しは、Mock <ISecurityService>ではなく、ISecurityServiceのインスタンスを返しているようです。

誰かがこのようにMoqAutoMockerをうまく使用しましたか?私はそれを間違っているだけですか?

4

2 に答える 2

10

私は最近、同様の問題に遭遇しました。解決策は次のようなことをすることだと思われます:

var autoMocker = new MoqAutoMocker<SignInController>();
var mock = autoMocker.Get<ISecurityService>();
Mock.Get(mock).Setup(ss => ss.ValidateLogin
(It.IsAny<string>(), It.IsAny<string>())).Returns(true);

また、ブログにもっと長い例を投稿しました:StructureMapのMoqAutoMockerで期待値を設定します。

于 2009-09-16T23:02:03.953 に答える
1

autoMocker.Get<ISecurityService>()
ISecurityServiceが返され、セットアップできません。逆
Mock.Get(mock)
に、Moq.Mockが返されるので、セットアップすることができます。

于 2015-10-28T07:55:33.990 に答える