を定義するミドルウェア関数がありますrequest.foo
。テストしたい関数は、ミドルウェアから定義されている foo に依存しています。テスト中にミドルウェアが実行されないため、どのように機能をテストしますか?
実際には、リクエストを受け取り、すべてのミドルウェアを順番に実行してから、最終的なリクエストを吐き出す関数が必要です (ビューに渡されたときと同じように)。そのような機能は存在しますか?
ミドルウェア関数を手動で呼び出すこともできますが、それはハックのようです。テスト対象のミドルウェアが別のミドルウェアに依存している場合はどうなりますか? 「ミドルウェア地獄」にぶち当たります。
<例>
ミドルウェア機能:
class FooMiddleware():
def process_request(self, request):
req.foo = True if req.session.get('foo') in [1,2,3,4,5,6,7,8,9,10] else False
テストしたい関数は次のとおりです。
def getBaz(request):
if request.foo == True:
return something()
else:
return somethingElse()
どのようにテストしgetBaz
ますか?
< /例 >
<可能性>
ミドルウェアを手動で実行できます。
def test_getBaz(self):
request = HttpRequest('/blarg')
request.session['foo'] = 2
middleware = FooMiddleware()
request = middleware.process_request(request)
value = getBaz(request)
assertEqual( value, expected )
しかし、それはハックのようです。テスト対象のミドルウェアが別のミドルウェアに依存している場合はどうなりますか?