我們正在使用Autofac.Extras.Moq.AutoMock。 現在我有使用懶惰<>如何使用Lazy <>與AutoMock(Moq)
public MyService(Lazy<IDependency> myLazyDependency) {...}
測試MyService
我們需要模擬Lazy<Dependency>
構造函數依賴。
我想這跟
[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
好主意,但我不能得到它的工作。你需要傳遞一個lambda。 MockedObj不被接受。 – dampee
然後傳遞類似'new Lazy(()=> mockedObj)':) – Rob