2014-01-07 79 views
0

由於我們將我們的應用程序中的flex sdk升級到4.10,因此我們在運行使用mockolate的單元測試時運行了驗證錯誤。Mockolate驗證錯誤:非法覆蓋..在Flex SDK 4.10更新後

它們似乎在模擬方法簽名中使用ByteArray的界面時發生。

實施例接口:

public interface IFileSystemHelper { 

    function loadFileContents(path:String):ByteArray; 

} 

實施例的測試類:

public class SomeTest { 

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

    [Mock] 
    public var fileHelper:IFileSystemHelper; 

    public function SomeTest() { 
    } 

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

當編譯和運行與的Flexmojos 6.0.1測試以下錯誤被拋出:

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

我最初的懷疑是playerglobal(或我們的例子中的airglobal)的sdk版本問題,所以我重新編譯了mo ckolate(和flexunit)與sdk 4.10,沒有任何結果。

,似乎工作的唯一一件事就是刪除方法簽名的ByteArray類型......但是這不是一個真正的選擇:-)(這以前從來沒有一個問題)

是否有任何人誰有類似的問題?

感謝

+0

所以我想你有一個接口IFileSystemHelper和mockolate正在生成一個類來「實現」模擬。你真的能看到生成的代碼嗎?從這個其他帖子http://stackoverflow.com/questions/4450302/mockolate-suddenly-getting-verifyerror-illegal-override最終你的問題是,你改變了IFileSystemHelper的簽名,但生成的模擬代碼尚未更新?因此,舊的生成的類會執行非法覆蓋,因爲簽名不匹配? –

+0

該方法的簽名沒有改變,也沒有測試。 雖然我沒有看過生成的代碼,但我會先給它一個指示,thx指針! :-) – Bert

+0

沒有什麼奇怪的在生成的來源和簽名上看到恐怕 – Bert

回答

0

這個問題通常與編制不同版本的SDK應用程序的不同部分時出現。

我會建議看看「mvn dependency:tree」的輸出,因爲這應該輸出所有的依賴關係(直接和可傳遞的依賴關係)。也許這會幫助你找到錯誤版本來自哪裏。

+0

嘿克里斯,這也是我的第一個猜測,但檢查依賴關係並沒有導致太多:-)。 – Bert

+0

我甚至在一個單獨的項目中孤立了這個問題,只使用了必要的柔性和空氣依賴性,mockolate和flexunit。 (所以排除其他依賴關係的問題)。我只添加了上面提到的示例界面和測試,但沒有任何運氣。 – Bert

+0

另一個問題可能是您正在使用包含框架類(靜態鏈接庫的排序)的rsls或正常庫,但我想這要稍微複雜一點。你可以用IntelliJ來告訴你它從哪裏得到ByteArray類。如果它發現多於一個,你就有麻煩了。我不知道FB是否能夠做到這一點。如果沒有用zip工具打開這些庫,並且查看清單應該有所幫助。從你的第二個評論來看,也許mockolate包含了一個動態鏈接的類? –