Imagine you have the following code
1 2 3 4 |
def do_something(): users = User.objects.filter(dob__gte='1980-01-01') for user in users: # do something to user |
If you were writing unit test against do_something()
, you would need to do some complex mocking on User.objects.filter()
to return some mock up data.
But this can be easily prevented by refactoring into a separate get_users()
method as below:
1 2 3 4 5 6 7 |
def get_users(): return User.objects.filter(dob__gte='1980-01-01') def do_something(): users = get_users() for user in users: # do something to user |
This way, you can just mock get_users()
to return the mock data.