Ошибка проверки Mockolate: незаконное переопределение.. после обновления Flex SDK 4.10

С тех пор как мы обновили flex sdk в нашем приложении до 4.10, мы столкнулись с ошибками проверки при выполнении модульных тестов, использующих mockolate.

Кажется, что они происходят при издевательстве над интерфейсом, где 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: Ошибка № 1053: недопустимое переопределение IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08AE814ED в mockolate.generated.IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08A

Моим первоначальным подозрением была проблема версии SDK с playerglobal (или airglobal в нашем случае), поэтому я перекомпилировал mockolate (и flexunit) с SDK 4.10, но безрезультатно.

Единственная вещь, которая, кажется, работает, это удалить тип ByteArray из сигнатуры метода... но это не совсем вариант:-) (и это никогда не было проблемой раньше)

Есть ли кто-нибудь, у кого была похожая проблема?

Спасибо

1 ответ

Решение

Эта проблема обычно возникает при компиляции разных частей вашего приложения с разными версиями SDK.

Я бы порекомендовал взглянуть на вывод "mvn dependency:tree", так как это должно вывести все зависимости (прямые и транзитивные). Возможно, это поможет вам узнать, откуда исходит неправильная версия.

Другие вопросы по тегам