4 ms·
mocking / interaction / expect breaks encapsulation to perform "testing". Thus it is often a test of the implementation's assumptions when first written, and e
by cowardlydragon 9y ago
mocking / interaction / expect breaks encapsulation to perform "testing".
Thus it is often a test of the implementation's assumptions when first written, and even worse, when the code is maintained/edited, the test is merely changed to get it to pass, because unit tests with mocks are usually:
1) fragile to implementation
2) opaque as to intent
Whereas input/output integration points are more reliable, transparent, and less fragile to implementation changes if the interface is maintained.
However, if you must do mock-level interaction testing, Spock has made it almost palatable in Javaland.
This is one area where functional fans get to make the imperative folks eat their lunch.
- YZF 9y agoExactly. I've seen tests where some code calls: printf("hello world"); And the test is: mock_printf(string) { if string != "hello world" then fail; } Which is basically just duplicating your code as tests.