There is the following example:
1) Interface
public interface ICustomInterface { ... }
2) Class
public class CustomObject
{
public CustomObject(Func< ICustomInterface > factoryFunc) { ... }
}
3) Test
[SetUp]
public void TestInitialize()
{
Mock<Func< ICustomInterface >> factoryFuncMock =
MoqMockingKernel.GetMock<Func< ICustomInterface >>(); <-- ArgumentException
factoryFuncMock.Setup(...).Returns(...);
}
As I understand, the exception is thrown because Mock.Get< T >(T) waits for Func< ICustomInterface >, but MoqMockingKernel.Get<Func< ICustomInterface >> returns a FunctionFactory<> type instead of Func<>
This case is helpful when we try to inject Func< ... > with several generic types and then we want to check that Func was called with correct arguments
Example:
Mock<Func<bool, ICustomInterface>> factoryFuncMock = MoqMockingKernel.GetMock<Func<bool, ICustomInterface>>();
factoryFuncMock.Setup(factoryFunc => factoryFunc(true)).Returns(...);
There is the following example: 1) Interface public interface ICustomInterface { ... }
2) Class public class CustomObject { public CustomObject(Func< ICustomInterface > factoryFunc) { ... } }
3) Test [SetUp] public void TestInitialize() { Mock<Func< ICustomInterface >> factoryFuncMock = MoqMockingKernel.GetMock<Func< ICustomInterface >>(); <-- ArgumentException factoryFuncMock.Setup(...).Returns(...); }
As I understand, the exception is thrown because Mock.Get< T >(T) waits for Func< ICustomInterface >, but MoqMockingKernel.Get<Func< ICustomInterface >> returns a FunctionFactory<> type instead of Func<>
This case is helpful when we try to inject Func< ... > with several generic types and then we want to check that Func was called with correct arguments Example: Mock<Func<bool, ICustomInterface>> factoryFuncMock = MoqMockingKernel.GetMock<Func<bool, ICustomInterface>>(); factoryFuncMock.Setup(factoryFunc => factoryFunc(true)).Returns(...);