2013-10-25 3 views
1

컨트롤러에 Spec2를 사용하여 단위 테스트를 수행 할 메서드가 있습니다.Play Framework 및 스칼라 : 클래스가있는 메서드 모방

object MyController extends Controller with MyAuth { 
    def article(id: String) = { 
    authenticate { 
     ...... 
    } 
    } 
} 

authenticateMyAuth에 정의되어 있습니다. 이 함수는 사용 가능한 경우 토큰을 가져 오거나 인증하고 토큰을 가져옵니다. 나는 단위 테스트를 article 동안 authenticate 조롱하고 싶다. 이 문제를 어떻게 처리해야할지 모르겠습니다. 모든 포인터가 도움이 될 것입니다.

업데이트 : 지금까지의 나의 접근 방식. 이 글은 question이며 MyAuth 특성에서 인증 방법을 오버로드했습니다.

trait MyAuthMock { 
    this: MyAuth => 

    override def authenticate .... 
} 

또한 MyController을 클래스 및 동반자 개체로 변경했습니다. 그런 다음 내 테스트에서 다음과 같이 컨트롤러를 사용했습니다.

new MyController with MyAuthMock 

답변

1

코드를 약간 리팩터링하여 테스트하기 쉽습니다. 예를 들어 : FakeAuth이 모의이다

val myTestController = new MyController with FakeAuth 

:

class MyController extends Controller { 

    def authenticate(...) // abstract method 

    def article(id: String) = { 
    authenticate { 
     ...... 
    } 
    }  
} 

object MyController extends MyController with RealAuth 

테스트 클래스에서 당신이 뭔가를 할 것입니다.

+0

나는 내가가는 방법으로 질문을 업데이트했다. 나는 당신이나 당신의 더 나은 접근 방법이 무엇인지 모르겠습니다. – Prasanna

관련 문제