4

私はWindsorでオートモッキングをしたいので、次のようなことができます

  _controller = _autoMockingContainer.Create<MyControllerWithLoadsOfDepdencies>();

Ayende の Rhinoライブラリには、Windsor 自動モック コンテナがありました。しかし、それはもはや維持されていないようで、依存関係が少し古いため (Castle Windsor 2 を使用していますが、2.5 を参照する必要があります)、dll 地獄を引き起こしています。

実行可能な代替手段はありますか?rhino のテストから関連するクラスを取り出してみましたが、処理できる範囲ははるかに複雑です。

4

3 に答える 3

6

@mookid8000 のリンクと同僚の助けのおかげで、私はこれを作成しました。

 public abstract class TestBase
    {
        static readonly WindsorContainer _mockWindsorContainer;

        static TestBase()
        {
            _mockWindsorContainer = new WindsorContainer();
            _mockWindsorContainer.Register(Component.For<LazyComponentAutoMocker>());
        }

        protected static T MockOf<T>() where T : class
        {
            return _mockWindsorContainer.Resolve<T>();
        }

        protected static T Create<T>()
        {
            _mockWindsorContainer.Register(Component.For<T>());
            return _mockWindsorContainer.Resolve<T>();
        }

    }

    public class LazyComponentAutoMocker : ILazyComponentLoader
    {
        public IRegistration Load(string key, Type service, IDictionary arguments)
        {
            return Component.For(service).Instance(MockRepository.GenerateStub(service));
        }
    }
于 2011-07-01T08:35:32.213 に答える
5

ここで、NSubstitute を使用して Windsor を自動モック コンテナーにする方法を確認してください。

ILazyComponentLoaderNSubstitute の代わりに Rhino モックを使用してモック インスタンスを生成する を登録することで、必要な機能で Windsor を拡張するのは非常に簡単です。

更新: 最近、Windsor が Rhino モックを使用して自動モックを実装する方法をブログで紹介しました。

于 2011-06-24T19:50:16.143 に答える
1

Moq Contribには、Windsor + Moq の自動モック コンテナーがあります。最新のようです。明らかに、Rhino.Mocks の代わりに Moq を使用する必要があります。

于 2011-06-24T14:55:51.243 に答える