私たちはAutofac.Extras.Moq.AutoMockを使用しています。 は、今、私たちはLazy<Dependency>
を模擬する必要がMyService
をテストするためにレイジー<>どのようにLazy <>をAutoMock(Moq)で使用できますか
public MyService(Lazy<IDependency> myLazyDependency) {...}
を使用して、コンストラクタ依存性を持っています。
私は
[ClassInitialize]
public static void Init(TestContext context)
{
autoMock = AutoMock.GetLoose();
}
[TestInitialize]
public void MyTestInitialize()
{
var myDepMock = autoMock.Mock<Lazy<IDependency>>(); // <-- throws exception
}
でこれをしようとしていますこれは、テストランナーによって返された例外です:
初期化方法Tests.MyServiceTests.MyTestInitializeが例外をスローしました。 System.InvalidCastExceptionの:System.InvalidCastExceptionの:型のオブジェクトをキャストすることができません 'System.Lazy 1[IDependency]' to type 'Moq.IMocked
1 [System.Lazy`1 [IDependency]]' ..
だから、どのように私が使用してレイジー<>嘲笑オブジェクトを渡すことができますautomock。
なぜ 'IDependency'をモックし、' new Lazy(mockedObj) 'を渡すのはなぜですか? 'レイジー'を模倣する理由はありません。あなたはシステムフレームワークをテストしていません。 – Rob
良いアイデアだが、うまく動作しない。あなたはラムダを渡す必要があります。 MockedObjは受け入れられません。 – dampee
そして、 'new Lazy(()=> mockedObj)'のようなものを渡してください:) – Rob