Skip to content

Instantly share code, notes, and snippets.

@matiasfha
Created October 21, 2014 14:59
Show Gist options
  • Save matiasfha/29223004aa249ef33b0e to your computer and use it in GitHub Desktop.
Save matiasfha/29223004aa249ef33b0e to your computer and use it in GitHub Desktop.
#The mocked method to test
def save_obj(self, original_obj):
obj = super(CampaignProcessor, self).save_obj(original_obj)
for r in original_obj.featured_reviews.all():
review = (
r and
review_processor.get_or_create_obj(r)[0]
or None)
if review:
obj.featured_reviews.add(review)
obj.save()
return obj
# The code for the test
review = mommy.make('reviews.Review',id=123,
campaign=self.original_campaign)
mock_brand_camp = self.mox.CreateMockAnything()
self.mox.StubOutWithMock(models.ModelProcessor, 'save_obj')
self.mox.StubOutWithMock(models.review_processor, 'get_or_create_obj')
models.review_processor.get_or_create_obj(
review).AndReturn(
['brands featured review'])
self.original_campaign.featured_reviews.add(review)
mock_brand_camp.save()
self.mox.ReplayAll()
obj = models.campaign_processor.save_obj(self.original_campaign)
self.mox.VerifyAll()
self.assertEqual(obj,mock_brand_camp)
self.assertTrue(review in self.original_campaign.featured_reviews.all())
# The error
AttributeError: MockMethod has no attribute "add". Did you remember to put your mocks in replay mode?, (in line self.mox.ReplayAll() )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment