Bri*_*ian 8 ruby testing rack sinatra
我有一个Sinatra应用程序,它以只读或可编辑的方式提供页面,具体取决于用户是否已登录.
控制器设置一个变量@can_edit,视图使用该变量来隐藏/显示编辑链接.我怎样才能@can_edit在测试中测试它的价值?我不知道如何在Rack :: Test下获取控制器的当前实例.
我用来在控制器中class_eval存根logged_in?方法,但是我不得不求助于检查last_response.body我的编辑链接以查看是否@can_edit已经设置.
我该如何@can_edit直接测试其值?
不幸的是,如果不修改Rack :: Test,我认为这是不可能的.当您在应用程序测试期间提出请求时,Rack :: Test会执行以下操作:
call方法这很容易访问last_request和last_response,但不幸的是,而它的运行没有任何信息保存了您的应用程序的状态.
如果你有兴趣将Rack :: Test修补程序拼凑在一起,请先查看rack-test/lib/rack/mock_session.rb第30行.这是Rack :: Test运行你的应用程序并获得标准Rack app返回值的地方(状态,标题,正文) ).我的猜测是,您还必须修改您的应用程序,以收集并使其所有实例变量可访问.
无论如何,最好测试结果,而不是实现细节.如果要确保编辑链接不可见,请按DOM ID测试是否存在编辑链接:
assert last_response.body.match(/<a href="..." id="...">/)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2678 次 |
| 最近记录: |