setup quantity meaning ejemplos alibaba moq

quantity - moq nuget



Burlar objetos con Moq cuando el constructor tiene parĂ¡metros (2)

Tengo un objeto que estoy intentando burlar usando moq. El constructor del objeto tiene parámetros requeridos:

public class CustomerSyncEngine { public CustomerSyncEngine(ILoggingProvider loggingProvider, ICrmProvider crmProvider, ICacheProvider cacheProvider) { ... } }

Ahora estoy intentando crear el simulacro para este objeto usando la sintaxis v3 "setup" o v4 "Mock.Of" de moq, pero no puedo entender esto ... todo lo que intento no es validar. Esto es lo que tengo hasta ahora, pero la última línea me está dando un objeto real, no el simulacro. La razón por la que hago esto es porque tengo métodos en CustomerSyncEngine que quiero verificar que se llaman ...

// setup var mockCrm = Mock.Of<ICrmProvider>(x => x.GetPickLists() == crmPickLists); var mockCache = Mock.Of<ICacheProvider>(x => x.GetPickLists() == cachePickLists); var mockLogger = Mock.Of<ILoggingProvider>(); // need to mock the following, not create a real class like this... var syncEngine = new CustomerSyncEngine(mockLogger, mockCrm, mockCache);


Cambiar la última línea a

var syncEngine = new Mock<CustomerSyncEngine>(mockLogger, mockCrm, mockCache).Object;

y debería funcionar


La última línea le proporciona una instancia real porque está usando la palabra clave nueva, sin burlarse de CustomerSyncEngine.

Debería usar Mock.Of<CustomerSyncEngine>()

El único problema con los tipos de Mocking Concrete es que Moq necesitaría un constructor predeterminado público (sin parámetros) O bien, debe crear el Moq con la especificación de constructor arg. http://www.mockobjects.com/2007/04/test-smell-mocking-concrete-classes.html

Lo mejor que puedes hacer es hacer clic derecho en tu clase y elegir Extraer interfaz.