У меня есть интуитивное предчувствие. что функция правильно исправлена с помощью макета, но по какой-то причине мой вызов render не может получить данные ответа, хотя я могу ошибаться.
planner/views/meals.py
Код: Выделить всё
def fetch_options(request, meal, field):
if field == "ingredients":
index = 1
else:
index = 0
try:
response = requests.get("log/api/send_" + field) #Trying to mock requests here, request fetches from /log/views/api.py
except ConnectionError:
requests.raise_from_exception()
else:
return render(request, {"meal": meal, "options": list(response)[index]}) # throws list index out range in tests
Код: Выделить всё
def send_data(request, option):
match option:
case "ingredients":
data = Log.objects.first().recipe_ingredients
case "areas":
data = Log.objects.first().recipe_area
case "categories":
data = Log.objects.first().recipe_categories
case "activities":
data = Log.objects.first().activities
response = JsonResponse(data, status=200, safe=False)
return response
Код: Выделить всё
from unittest import MagicMock, patch
@patch("planner.views.meals.requests")
def test_fetch_options(self, mock_requests):
mock_response = MagicMock()
mock_response.status_code = 200
mock_response.json_data = [{"id": "357", "strIngredient": "Orange"}]
mock_requests.get.return_value = mock_response
self.assertContains(
fetch_options("request", "breakfast", "ingredients"), status_code=200
)
Подробнее здесь: https://stackoverflow.com/questions/785 ... uests-mock