2016-08-05 2 views
3

장고 앱의 단위 테스트를 작성하고 있습니다. 현재 나는 가짜 객체를 만들기 위해 factory_boy을 사용하고 있습니다. 이것은 대부분의 테스트에서 잘 작동하지만 다음과 같은 문제가 있습니다. 내 factory_boy 객체가 {model}.objects에 표시되지 않습니다. 예를 들어, 내 시리얼에 다음과 같은 방법을 테스트하기 위해 노력하고있어 : 디버거 그것을 통해가는Django REST Framework - 단위 테스트를위한 가짜 객체

def get_can_edit(self, obj): 
    request = self.context.get('request') 
    user = request.user 
    admin = SimpleLazyObject(obj.admin) 
    user = User.objects.get(username=request.user) 
    return user == obj.admin 

, 나는 request.user가 정확하게 내 가짜 사용자를 가지고 있지만, User.objects하지 않는 것으로 확인되었습니다 내 가짜 사용자있어.

factory_boy에 대한 간단한 대안이 있는데 실제로 가짜 객체를 {model}.objects에 추가하거나 factory_boy를 잘못 사용하는 경우 궁금합니다. 아니면 완전히 다른 접근법이 있습니다. 누가 알습니까?

The serializer

The test

+0

당신은 또한이 같은 수 있습니다 https://github.com/vandersonmota/model_mommy을 –

답변

2

객체가 데이터베이스에 저장하는 당신은 당신의 UserFactoryDjangoModelFactory 대신 Factory 기본 클래스에서 상속해야합니다

여기에 코드입니다. 장고 Model에 대한 factory_boy docs:

모든 공장에서

DjangoModelFactory 기본 클래스를 사용해야합니다.

class UserFactory(factory.DjangoModelFactory): # use DjangoModelFactory base class 

    class Meta: 
     model = models.User 
+0

정말 고마워요! 그랬어. – Tom

관련 문제