Ошибка проверки 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", так как это должно вывести все зависимости (прямые и транзитивные). Возможно, это поможет вам узнать, откуда исходит неправильная версия.