У меня есть модель в django, у которой есть внешний ключ к другой модели, и во время модульного тестирования я хочу избежать тесной связи двух моделей и создать заглушку для другой модели, которая будет каждый раз возвращать разные значения.
Придуманный пример:
class Moon(models.Model):
def phase(self):
# some extremely complex code
class Wolf(models.Model):
moon = models.ForeignKey(Moon)
mood = models.CharField()
def update_mood(self):
if (self.moon.phase == 'new moon'):
self.mood = "good"
if (self.moon.phase == 'waxing crescent'):
self.mood = "hopefull"
...
Пример для вышеупомянутого:
w = Wolf()
m = Moon()
# m.phase = 'new moon'
w.moon = m
w.update_mood()
w.mood # 'good'
Теперь я хочу протестировать свойство Wolf (). Moon после того, как я выполню вызов update_mood (), вообще не затрагивая модель Луны - потому что это очень сложная модель, которая вычисляется во всех видах внешних систем. вне его фазы.
Обычно для этого я использовал бы исправление обезьян, но, поскольку .mood - это свойство ... Я не могу присвоить его способом исправления обезьян.
Справка.