I just reviewed a pull request with a test case like (pseudo code):

# Test MyService

const mock = createMock(myService.myMethod)
assert(mock.myMethod("foo") === "bar"));

Why though? Why are we testing the mock? What is happening here? This test has no reason of being there instead of a fuzzy feeling that we now have unit test to lure us into a false sense of security.

I asked why we don't do an integration test. Response was: "They are slow."

Well, duh, but at least they would actually test something.

What do you gain by asserting that the mock is working the way you set it up?

  • 5
    That's why I'm learning to live w/o mockito/powermock/etc. It's always too tempting to write a test that only tests... the mocking framework.
  • 1
    And then they are shocked when prod fails. "But we tested." No, you tested a mock-up, not the app.
  • 1
    The only time you are supposed to mock things during unit tests, are for third part functions which return different outcome depending on when called.

    In practice, I mainly used them for mocking api call responses, which then my function processes it.
Your Job Suck?
Get a Better Job
Add Comment