메소드의 서브 세트를 오버라이드하고 나머지 메소드에 런타임 예외를 발생시키는 주어진 유형의 객체를 생성하는 방법이 있습니까?스칼라 모의 객체 생성
수퍼 클래스의 구현에 액세스 할 필요조차 없습니다. 그것은 단지 컴파일 타임과 런타임에서 같은 타입을 가질 필요가있다.
메소드의 서브 세트를 오버라이드하고 나머지 메소드에 런타임 예외를 발생시키는 주어진 유형의 객체를 생성하는 방법이 있습니까?스칼라 모의 객체 생성
수퍼 클래스의 구현에 액세스 할 필요조차 없습니다. 그것은 단지 컴파일 타임과 런타임에서 같은 타입을 가질 필요가있다.
모의 객체가 상자에서 꺼내는 것만 큼 - 예상치를 설정 한 방법은 기대치에 따라 무엇이든해야하며, 다른 모든 것은 ExpectationException을 던집니다.
사용 사례는 무엇입니까?
Paul이 말했듯이 ScalaMock은 좋은 방법입니다.
하지만 당신은 그냥 기본 상속 설명하고 있다는 점을 지적하고 싶었 : 당신이 MockOriginalClass
에 전달할 수있는 OriginalClass
객체를 기대했던 코드에서, 그리고
class OriginalClass {
def methodToRun() = { println("called OriginalClass.methodToRun") }
def methodNotToRun() = { println("called OriginalClass.methodNotToRun") }
}
class MockOriginalClass extends OriginalClass {
override def methodToRun() = super.methodToRun()
override def methodNotToRun() = throw new RuntimeException("you weren't supposed to run this!")
}
을하며 오류가 발생합니다 당신이 잘못한 것을 부를 때.
주된 문제는 실행되지 않는 모든 메소드에 대한 상용구'throw new RuntimeException (...)'을 추가하고 싶지 않다는 것입니다. 너를 위해 채워진 언어 특징이 있다면 그것은 과냉각 일 것이다. – dsg
나는 당신이 명시 적으로 말하지 않았다면 어떤 방법이 허용되었고 어떤 것이 허용되지 않았는지 시스템이 어떻게 알 수 있는지 약간 혼란 스럽다. '새로운 RuntimeException 던짐 '을 붙여 넣는 것은 너무 많은 일처럼 보이지 않습니다. – dhg
기본값은 모든 메서드가 허용되지 않는다는 것입니다 (예외를 throw합니다). 다른 메소드의 구현을 지정합니다. – dsg
구현되지 않은 모든 메소드에 대한 상용구 코드를 작성하고 싶지 않습니다 (dhg의 답변에 대한 설명 참조). 나는 scalamock이 충분하다고 생각한다. 그러나 외부 라이브러리에 갈 필요가 없다면 좋을 것입니다. – dsg
PowerMockito에서 누군가가 MyClass 인스턴스를 새로 만들면 "new (MyClass) .thenReturn (mockMyClass)"패턴을 사용하여 실제 인스턴스 대신 mockMyClass를 수신 할 수 있습니다. ScalaMock에서 비슷한 작업을 수행 할 수 있습니까? 나는이 문제를 하루 종일 보냈다. –