How to mock everything?

2019-06-17 19:13发布

I understand how to mock interfaces or virtual method calls. But frameworks like TypeMock can mock everything in the framework. Which .NET mechanisms are used to provide such functions?

2条回答
时光不老,我们不散
2楼-- · 2019-06-17 19:18

Typemock Isolator for example uses the CLR profiler API to intercept .NET calls and change them during runtime:

Quote:

Typemock Isolator uses an aspect-oriented programming design that creates a mock aspect. Internally, it uses the .NET Framework profiler API to monitor an application's execution. When a method is loaded by the CLR, Typemock Isolator retrieves the IL and replaces it with instrumented IL code. Typemock Isolator does not change your original IL code, it simply inserts new code that calls the Typemock Isolator framework and returns mocked values.

查看更多
做自己的国王
3楼-- · 2019-06-17 19:29

Mock Everything is one of the feature for Mock frameworks. Mock everything in short is to mock everything in a class, such as

  • mock dependent objects
  • non-virtual methods
  • sealed classes
  • static methods
  • static classes
  • non-public members
  • non-public types

JustMock & TypeMock both provide this feature.

You can actually look at source code of some open source mock frameworks such as Moq framework ,Easy Mock, Rhino Mocks etc.

Disclosure: Please note that link provided is of my own website

查看更多
登录 后发表回答