Ivá*_*ero 0 ruby rspec ruby-on-rails path capybara
我正在开发一个 Rails 项目,其中我使用 Rspec 与 Capybara 进行单元测试以访问页面。我有这个真实的网址:课程 IDhttp://localhost:3000/teacher/courses/2778/audience在哪里2778,此页面显示了登录的教师该课程中的学生(观众)。
我routes.rb的这个资源看起来像这样:
...
namespace :teacher do
...
resources :courses, except: [:delete] do
member do
...
get :audience
...
end
end
end
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,我已经以特定教师的身份登录,并且有一个@course代表相关课程的变量,现在,我需要直接转到该网址或路径。我已经尝试过:
visit '/teacher/courses/@course.id/audience'
visit '/teacher/courses/' + @course.id + '/audience'
visit '/teacher/courses/#{@course.id}/audience'
Run Code Online (Sandbox Code Playgroud)
但这些都没有奏效。
我怎样才能访问这条路径?
字符串插值需要双引号"尝试:
visit "/teacher/courses/#{@course.id}/audience"
Run Code Online (Sandbox Code Playgroud)
假设visit "/teacher/courses/12/audience"@course.id 为 12。
现在的问题就是这些。
第一个示例: visit '/teacher/courses/@course.id/audience'是一个显式字符串,因此它尝试'/teacher/courses/@course.id/audience'作为真实 URL 进行访问。
第二个例子: visit '/teacher/courses/' + @course.id + '/audience'会引发,TypeError: no implicit conversion of Fixnum into String因为 id 是一个 Fixnum 并且不能隐式转换。(可以解决,@course.id.to_s但看起来很脏)
第三个示例: visit '/teacher/courses/#{@course.id}/audience'也是一个显式字符串,因为缺少双引号,其行为方式与第一个示例相同,只是它尝试使用 /teacher/courses/#{@course.id}/audience 作为包含大括号。
另外,正如 @MusannifZahir 指出的那样,您应该确保这门课程存在于您的测试数据库中。我的回答假设这不是实际问题。
| 归档时间: |
|
| 查看次数: |
5757 次 |
| 最近记录: |