3
나는 스칼라에 다음과 같은 패턴을 가지고이 패턴을 대체 기능으로 대체하는 방법은 무엇입니까?
는object CurrentDriver {
private var webDriver: WebDriver = null
def invalidate = {
webDriver.quit()
webDriver = null
}
def getWebDriver = {
if (webDriver==null)
webDriver = DriverFactory.buildWebDriver
webDriver
}
}
그 작동하지, 그것은 VAR을 가지고 있으며, 무효화 방법은 단위를 반환합니다. 싱글 톤 객체는 프레임 워크에 의한 리플렉션을 사용하여 인스턴스화 된 몇 개의 클래스에 의해 참조되기 때문에 필요합니다. 따라서 인수를 전달할 방법이 없습니다. 따라서 WebDriver의 동일한 인스턴스에 액세스하려면 getWebDriver를 호출해야합니다. 필자는 주기적으로 (여러 테스트 함수로 구성된 각 테스트 시나리오가 끝난 후) invalidate 메서드로 처리되는 새 WebDriver를 끝내고 다시 작성해야합니다.
이 좋은 답변입니다,하지만 난 여러 테스트에 사용되는 동일한 인스턴스를 필요로하는 내 특정 문제가 해결되지 않는, 그것의 내 잘못은 내가 질문을 작동하지 않았다 같이 예를 들어
올바르게 설명을 업데이트했습니다. 감사! – nfvindaloo
나는 테스트의 서명이 같을 것이라고 추측하고있다. 각 테스트는 아무것도 가져 가지 않고 단위를 반환하지 않을 것이다.이 경우 블록 주위의 서명은 하나의 함수가 아닌 함수의 목록 일 수있다 .. 그리고 논리는 여전히 남아있을 것이다. 같은 ... 어떤 경우에, 테스트 용 vars 두 개가 그렇게 나쁘지는 않다. :) – mohit
'webDriver' 인스턴스가'f' 함수에 전달되어야한다고 생각하기 때문에'around' 블록의 코드 그것에 접근 할 수 있습니다. –