別のモデルへの外部キーを持つモデルが django にあり、単体テスト中に 2 つのモデルの密結合を避け、毎回異なる値を返す他のモデルのスタブを作成したいと考えています。
考案された例:
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'
今、私は update_mood() 呼び出しを行った後、Wolf().moon プロパティをテストしたいと思います。Moon モデルには実際にはまったく触れずに、そのフェーズを把握するためにあらゆる種類の外部システムに出て行く非常に複雑なモデルであるためです。 .
通常、これにはモンキー パッチを使用しますが、.mood はプロパティであるため、モンキー パッチの方法で実際に割り当てることはできません。
ヘルプ。