Ich möchte ein bestimmtes Modell testen, ohne sich um das andere Modell kümmern zu müssen, zu dem es einen Fremdschlüssel (FK) hat.Test django Modell mit Fremdschlüssel zu einem anderen Modell
Sagen Sie mein Modell Bundle einen Fremdschlüssel zu meiner anderen Modell Session benötigt: 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)
Als ich versuche, meine Bundle-Klasse mit einem Mock zu testen (weil ich nicht kümmern muß, was Feldwerte sind in dem Objekt Session) auf test_models.py
:
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)
ich halte diese Nachricht bekommen:
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'
Hier ist die Frage: Was ist der absolut richtige Weg zur Verwendung eines Test Double in dieser Situation? Weil es mir bisher nicht gelungen ist, einen zu verwenden.
Vielen Dank für Ihre Antwort. Ich habe mein Problem gelöst – joaofguerreiro