Я использую раскадровки и RubyMotion. В моей спецификации у меня есть следующие:Контрольные контроллеры просмотра в раскадровках в RubyMotion
describe "SignUp scene" do
tests SignUpFacebook, :storyboard => 'LoginStoryboard', :id => 'SignUp'
it "some test" do
tap 'FirstName'
# some test here
end
end
В контроллере представления у меня есть
class SignUpFacebook < UIViewController
def viewWillAppear animated
super
self.navigationController.setNavigationBarHidden (true, animated:false)
end
def viewWillDisappear animated
super
self.navigationController.setNavigationBarHidden (false, animated:false)
end
#some code to be tested
end
, когда я "грабли спецификации" я получаю ошибку:
[ERROR: NoMethodError - undefined method `setNavigationBarHidden' for nil:NilClass]
так, то navigationController равен нулю. Я что-то упускаю? В качестве альтернативы, может ли кто-нибудь предложить подход для тестирования контроллеров представлений, которые ссылаются на контроллер навигации? Кроме того, для проверки того, что контроллер хочет выполнить segue в определенных условиях. Есть ли какой-нибудь макет или заглушка, которую я мог бы использовать?
Метод 'tests' создает новый интерфейс UIWindow и устанавливает на нем контроллер корневого представления, который будет тестировать контроллер. Также, если вы скрываете навигационную панель, почему она там? Возможно, вместо этого используется модальная модель представления. 'self.presentViewController (@sign_up_facebook_controller, animated: true, completion: noil)' – FluffyJack
Вы бы назвали это из контроллера представления, который его отображает. – FluffyJack
Да, для примера, который я дал, ваше предложение позволит избежать проблемы. Тем не менее, у меня есть другие контроллеры в раскадровки, которые настраивают элементы NavigationBarButtonItems, поэтому я все равно получаю ту же ошибку. Я нашел способ, который работает сейчас (см. Ниже). Спасибо за ваш комментарий, хотя, это увеличило мое понимание того, что происходит. –