私は Django でいくつかの日付のモックの問題に取り組んでおり、最後のハードル (希望) は次の状況です。から派生した FakeDate クラスがありdatetime.date
、それをモックします。
FakeDate クラスは期待どおりに動作しますが、FakeDate に a を追加すると、モックではなくdatetime.timedelta
本物の が返されるという問題が発生します。datetime.date
これは、サードパーティ ライブラリの他の場所にisinstance(value, datetime.date)
チェックがあり、timedelta を使用すると常に失敗するため、重要です。
>>> import mock
>>> import datetime
>>>
>>> class FakeDate(datetime.date):
... @classmethod
... def today(cls):
... return cls(1999, 12, 31)
...
>>> FakeDate.today()
FakeDate(1999, 12, 31)
>>> FakeDate(2000, 1, 1)
FakeDate(2000, 1, 1)
>>> FakeDate(1999, 12, 31) + datetime.timedelta(days=1)
datetime.date(2000, 1, 1)
FakeDate + timedelta の追加で、datetime.date オブジェクトではなく FakeDate オブジェクトを返すようにしたいのですが、timedelta にパッチを適用する必要があると思いますが、どのように/どこでこれを行うことができますか?