Refactoring test units after an extract method

V

Virgil Dupras

This is not strictly python related, but it's not strictly TDD related
either. Anyway, here it goes.

There's something that I was never quite sure how to handle with test
units: How to handle the test unit refactoring after a method
extraction.

Let's say that you have a function foo() that does A and B. You have
tests for foo() that check that A and B are executed properly. Then,
you add another function, bar(), that needs to do B, so you add a
third function, baz() that does B and make foo() and bar() call baz().

How to you handle the tests? Copy over the tests you had for foo() and
apply them to bar()? I don't like copy and pasting code. Move the B
related tests to baz()'s tests? Then your tests wouldn't fail if you
stopped calling baz() in foo() and bar().

What I do right now is that I mock baz() and verify that it is called
in foo() and bar(), with the right arguments. Then I move the B
related tests to baz(). It kind of works, but somehow, it doesn't feel
like the ideal solution to me. But then again, it's kind of the same
thing as if baz() was a third party function: You have to mock it to
test foo() and bar() properly without testing the third party code.

What do you people think?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,900
Latest member
Nell636132

Latest Threads

Top