2017-04-04 18 views
0

外部キー(FK)を持つ他のモデルを心配することなく、特定のモデルをテストしたいと思います。別のモデルへの外部キーを使ったdjangoモデルのテスト

私のモデルバンドルは私の他のモデルのセッションへの外部キーを必要と言う: models.py

class Bundle(ModelCommon): 
    session = models.ForeignKey(verbose_name=_('Session'), to=Session, default=None, null=False, blank=False) 
    available = models.BooleanField(verbose_name=_('Available'), default=True, null=False, blank=False) 

私はモック(と私のバンドルクラスをテストしようとして、私は何を気にする必要はありませんので、フィールド値はtest_models.py上)Sessionオブジェクトにあります。

def setUp(self): 
    MockSession = mock.create_autospec(Session) 
    self.test_session = MockSession() 
    self.bundle = Bundle(session=self.test_session, name='Mega Bundle', enabled=True, available=True, price=0) 

def test_event_enabled_is_default_false(self): 
    session = Session() 
    self.assertFalse(session.enabled) 

私はこのメッセージを得続ける:

Error 
Traceback (most recent call last): 
File "test_models.py", line 181, in setUp 
    self.bundle = Bundle(session=self.test_session, name='Mega Bundle', enabled=True, available=True, price=0) 
    raise AttributeError("Mock object has no attribute %r" % name) 
AttributeError: Mock object has no attribute '_state' 

ここに質問があります:この状況でTest Doubleを使用する絶対的な正しい方法は何ですか?今のところ、私はそれを成功させることに成功していないからです。

答えて

0

Session.__init__で設定された属性を、自動保護機能でモックアウトしようとしているようですが、これは不可能です。これについて詳しくはこちらをご確認くださいquestion

+0

ありがとうございます。私は私の問題を解決しました – joaofguerreiro

関連する問題