is it possible to mock/fake an extension method?

后端 未结 3 1773
忘掉有多难
忘掉有多难 2020-12-10 14:50

I\'m using a controller extension, and I tried to mock it using FakeItEasy (v 1.7.4) like this:

A.CallTo(() => controller.RenderView(A.Ignor         


        
相关标签:
3条回答
  • 2020-12-10 15:33

    This is not possible. Proxying/intercepting libraries used by FakeItEasy (and other popular free frameworks, like Moq or RhinoMocks) don't allow interception of static methods (static properties, sealed classes and non-virtual instance methods in fact). And extension method is just a kind of static method.

    You can take a look at TypeMock or JustMock, which do have such functionality.

    0 讨论(0)
  • 2020-12-10 15:35

    If the extension method is declared in a separate assembly, you could link in a replacement assembly with the same namespace.

    You'd have to replace any other required types from this assembly too, though.

    0 讨论(0)
  • 2020-12-10 15:43

    In FakeItEasy you can create it as a strict mock and then configure the static method

    http://hocke.blogspot.com.ar/2011/03/extension-method-for-creating-strict.html

    0 讨论(0)
提交回复
热议问题