2014-01-07 19 views
0

응용 프로그램의 flex sdk를 4.10으로 업그레이드 한 이후 mockolate를 사용하는 단위 테스트를 실행하는 동안 오류 확인으로 실행했습니다.Mockolate 확인 오류 : Flex SDK 4.10 업데이트 이후의 잘못된 무시 override ..

ByteArray이 메서드 시그니처에 사용 된 인터페이스를 조롱 할 때 발생하는 것처럼 보입니다.

예 인터페이스 :

public interface IFileSystemHelper { 

    function loadFileContents(path:String):ByteArray; 

} 

예 테스트 클래스 : 컴파일하고 다음과 같은 오류가 발생합니다 flexmojos 6.0.1 테스트 실행하는 경우

public class SomeTest { 

    [Rule] 
    public var mockolateRule:MockolateRule = new MockolateRule(); 

    [Mock] 
    public var fileHelper:IFileSystemHelper; 

    public function SomeTest() { 
    } 

    [Test] 
    public function testMethod():void { 
     // ... 
    } 
} 

:

VerifyError: Error #1053: Illegal override of IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08AE814ED in mockolate.generated.IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08AE814ED

내 초기의 의심은 playerglobal (또는 우리의 경우에는 airglobal)의 sdk 버전 문제였습니다. 그래서 나는 mo를 다시 컴파일했습니다. 어떤 결과도없이 sdk 4.10으로 ckolate (및 flexunit)를 실행하십시오.

작동하는 것 같다 유일한 것은 메소드 서명에서의 ByteArray 유형을 제거하는 것입니다 ...하지만 정말 옵션 :-) 아니다 (이 전에 문제가되지 않았어요)

사람이 있는가 누가 비슷한 문제가 있었습니까?

감사

+0

그래서 IFileSystemHelper 인터페이스가 있고 mockolate가 모의 객체를 구현하는 클래스를 생성하고 있다고 생각합니다. 실제로 생성 된 코드를 어딘가에서 볼 수 있습니까? 다른 게시물 http://stackoverflow.com/questions/4450302/mockolate-suddenly-getting-verifyerror-illegal-override 결국 귀하의 문제는 IFileSystemHelper의 서명을 변경했지만 생성 된 모의 코드가 업데이트되지 않았 음을 판단하는 것입니다. ? 따라서 서명이 일치하지 않기 때문에 오래된 생성 클래스는 불법 오버라이드를 수행 할 수 있습니까? –

+0

해당 메소드의 서명은 변경되지 않았으며 테스트도 수행되지 않았습니다. 비록 내가 생성 된 코드를 보지 못했지만, 나는 포인터를 가져야한다. :-) – Bert

+0

생성 된 소스 및 서명을 볼 수있는 이상한 점은 없습니다. – Bert

답변

0

의 SDK 버전이 다른 응용 프로그램의 다른 부분을 컴파일 할 때이 문제는 일반적으로 발생합니다.

"mvn dependency : tree"의 출력을보고 모든 종속성 (직접 및 전이 성)을 출력해야하므로이 옵션을 사용하는 것이 좋습니다. 아마도 이것은 잘못된 버전이 어디서 왔는지를 찾는 데 도움이 될 것입니다.

+0

Hey Chris, 내 첫 번째 추측 이었지만 종속성을 확인해도별로 도움이되지 않았습니다. – Bert

+0

필자는 별도의 프로젝트에서 필요한 flex & air 의존성, mockolate & flexunit 만 사용하여 문제를 격리하기까지했습니다. (그래서 다른 의존성에 대한 어떤 문제도 배제). 위의 예제 인터페이스와 테스트를 추가했지만 운이 전혀 없습니다. – Bert

+0

또 다른 문제는 rsls 또는 프레임 워크 클래스 (정적으로 링크 된 라이브러리의 일종)를 포함하고있는 일반 라이브러리를 사용하고있는 것일 수 있지만 좀 더 까다 롭습니다. IntelliJ를 사용하여 ByteArray 클래스를 가져 오는 위치를 알려줄 수 있습니다. 그것이 하나 이상에서 이것을 발견하면, 당신은 곤경에 처해 있습니다. 나는 FB가 이것을 할 수 있는지 모른다. Zip 도구로 libs를 열지 않고 매니페스트를 살펴 보는 것이 도움이된다면.당신의 두 번째 코멘트를 보면, 아마도 mockolate는 sataically 연결된 클래스를 포함하고 있습니까? –