Wir verwenden Autofac.Extras.Moq.AutoMock. Jetzt habe ich eine Konstruktor Abhängigkeit Faul mit <>Wie können Sie Lazy <> mit AutoMock (Moq) verwenden
public MyService(Lazy<IDependency> myLazyDependency) {...}
MyService
wir die Lazy<Dependency>
verspotten müssen zu testen.
Ich versuche, dies mit
[ClassInitialize]
public static void Init(TestContext context)
{
autoMock = AutoMock.GetLoose();
}
[TestInitialize]
public void MyTestInitialize()
{
var myDepMock = autoMock.Mock<Lazy<IDependency>>(); // <-- throws exception
}
Dies ist die Ausnahme von der Testläufer zurückgegeben:
Initialisierungsmethode Tests.MyServiceTests.MyTestInitialize Ausnahme ausgelöst hat. System.InvalidCastException: System.InvalidCastException: Kann nicht das Objekt von Typ 'System.Lazy 1[IDependency]' to type 'Moq.IMocked
1 [System.Lazy`1 [IDependency]]' ..
Also, wie kann ich passiere ein < Faul> verspottet-Objekt Automock.
Warum nicht "IDdependency" vortäuschen, und dann "new Lazy (mockedObj)" übergeben (oder wie auch immer es gebaut wird - ich habe es vergessen)? Es gibt keinen Grund, 'Lazy' zu verspotten, Sie testen das Systemframework nicht. – Rob
Gute Idee, aber ich kann es nicht zur Arbeit bringen. Sie müssen ein Lambda übergeben. MockedObj wird nicht akzeptiert. – dampee
Dann pass etwas wie 'new Lazy ((=) = mockedObj)' :) – Rob