Skip to content

MoqKernel.GetMock<T> throws ArgumentException when T is Func<...> #39

Description

@telamar

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(...);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions