Я пишу автоматизированные тесты для мобильного приложения Xamarin Forms. Поскольку напрямую взаимодействовать со встроенной картой Google/Apple сложно, я написал несколько бэкдор-методов, предназначенных для получения всей информации, которую карта может предоставить человеку. Однако в iOS написанный мной метод не возвращает возвращаемого значения, несмотря на мои инструкции об обратном.
До сих пор я делал всевозможные вещи, в том числе сводил метод только к заглушке, возвращающей фиктивную строку. До сих пор отказывается это делать. Нигде в документации Microsoft не указано, что значение не может быть возвращено на iOS.
[Export("GetUnits:")]
public NSString GetUnits(NSString val) // param unused
{
return new NSString("TEST"); // returns this value in the app, but it doesn't ever make it to the test harness
}
Приведенный выше код должен возвращать "TEST" тестовой программе, которая затем будет напечатана в моем REPL после вызова app.Invoke("GetUnits:", "")
, который всегда выдает
[
]
вместо
[
"TEST"
]
Метод назван правильно и вызывается правильно; сообщения об ошибках появляются, если я не вызываю его правильно (например, неправильное количество параметров, неправильное имя метода), и тестовый код, вставленный в метод, выполняется нормально, поэтому я знаю, что он выполняется. Он просто не возвращает значение в тестовую обвязку. Эквивалентная версия этого метода для Android работает отлично.
Я нашел одного человека на форумах Xamarin с такой же проблемой, но его тема не затрагивалась два года. Я прочитал все, что можно найти в Интернете, и все безрезультатно.
Отредактировано для форматирования. (Упс.)