【发布时间】:2013-12-05 13:35:20
【问题描述】:
我正在使用情节提要和 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
当我“rake spec”时,我得到了错误:
[ERROR: NoMethodError - undefined method `setNavigationBarHidden' for nil:NilClass]
所以,navigationController 是零。我错过了什么吗?或者,任何人都可以建议一种方法来测试引用导航控制器的视图控制器吗?此外,用于测试控制器是否希望在某些条件下执行 segue。我可以使用一些模拟或存根吗?
【问题讨论】:
-
tests方法创建一个新的 UIWindow 并将其上的根视图控制器设置为您正在测试的视图控制器。另外,如果您要隐藏导航栏,为什么会在那里?可能改用模态表示模型。self.presentViewController(@sign_up_facebook_controller, animated:true, completion:nil) -
你可以从显示它的视图控制器中调用它。
-
是的,对于我给出的例子,你的建议可以避免这个问题。但是,我在情节提要中有其他控制器可以自定义 NavigationBarButtonItems,所以我仍然会遇到同样的错误。我找到了一种现在可以使用的方法(见下文)。不过感谢您的评论,这增加了我对正在发生的事情的理解。