0
tests.pydjango : mock post_save 신호 처리기?
from unittest.mock import patch
from orders.models import Order
class OrderModelTest(CartSetupTestCase):
def test_string_representation(self):
# Mocking Order's post_save signal
with patch('orders.signals.post_save_order', autospec=True) as mocked_handler:
post_save.connect(
mocked_handler,
sender=Order,
dispatch_uid='test_cache_mocked_handler'
)
order = Order.objects.create(
user=self.user,
merchant_uid="1475633246629",
customer_name="asd",
address="주소",
address_detail="asdfdsa",
postal_code="12345",
phone_number="01095104344",
possible_date_start="2011-11-24",
possible_date_end="2011-11-24",
possible_time_start="11:22 AM",
possible_time_end="11:22 AM",
total_price=self.cart.total_price,
)
signals.py이
@receiver(post_save, sender=Order, dispatch_uid="spacegraphy") def post_save_order(sender, instance, created, **kwargs): if created: SlackNotification.objects.create( receiver="order_web", content="asdfasdf" )
내가 https://stackoverflow.com/a/13119150/3595632을 따라하지만 의미, 작동하지 않습니다, 그것은 실제의 신호 처리기를 호출! (나는
print()
을 사용하여 체크 아웃했다)
뭐가 잘못 되었니?
테스트와 함께 함수를 호출하지 않는 이유는 무엇입니까? 무언가가 창조 될 때 신호가 발사되는 것을 시험하기 위하여는 조금 그것을 고려하는 것은 중급 django이다. 적절한 시그니처와 함께'signal.send' 메소드를 호출 할 수있다. – theWanderer4865
@ theWanderer4865 당신이 말한 것을 나는 잡지 못했습니다. 예를 들어 주시겠습니까? – user3595632
mock_handler가 호출되었다고 주장 했습니까? 신호 코드를 가져올 때 (Django가 시작될 때) 신호에 핸들러를 몇 개나 등록합니다. 다른 핸들러를 실행하지 않으려면 명시 적으로 연결을 끊어야합니다. 더 많은 이야기가 있지만 그것은 1 단계입니다. – theWanderer4865