Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ActionView::Template::Error:未定义的方法`image\uURL';对于nil:NilClass,在使用rspec-rails进行集成测试时_Ruby On Rails_Rspec_Integration Testing - Fatal编程技术网

Ruby on rails ActionView::Template::Error:未定义的方法`image\uURL';对于nil:NilClass,在使用rspec-rails进行集成测试时

Ruby on rails ActionView::Template::Error:未定义的方法`image\uURL';对于nil:NilClass,在使用rspec-rails进行集成测试时,ruby-on-rails,rspec,integration-testing,Ruby On Rails,Rspec,Integration Testing,我是rails的初学者,我正在尝试测试我的rails应用程序 我的页面工作正常,但是在进行集成测试时,我遇到了这个错误 User signs in with username Failure/Error: <div class="art-img" style="background: url(<%= @article.image_url %>); background-size: 100% 100%; background-repeat:

我是rails的初学者,我正在尝试测试我的rails应用程序

我的页面工作正常,但是在进行集成测试时,我遇到了这个错误

User signs in with username
     Failure/Error: <div class="art-img" style="background: url(<%= @article.image_url %>); background-size: 100% 100%; background-repeat: no-repeat; background-position: center">
     
     ActionView::Template::Error:
       undefined method `image_url' for nil:NilClass

nil:NilClass的错误消息
未定义的方法“image\u url”似乎表明
@article
在测试环境中是
nil
。此环境与开发环境不同,开发环境及其类对象可能就是您在浏览器中看到的

我希望您可以通过在运行测试之前在测试环境中创建(至少)一篇文章来解决问题:

  background do
    User.create(name: 'Jane Doe', username: 'jodi')
    Article.create(title: 'Your Title', etc...)
  end
然后,本文将以与用户JaneDoe相同的方式在测试数据库中持久化


另一方面,您的特性测试似乎也在隐式测试(至少)索引的两个特性:是否存在与文章相关联的图像,以及是否存在注销按钮。如果可能的话,考虑分开这两个测试,或者至少对两者进行明确的测试。

似乎没有文章存在。你能和我们分享测试代码吗?嘿@Didymus Orotayo我想你能做到:
@article=article.unscoped.order(cached\u weighted\u total::desc)。控制器中的限制(1)
。这将返回1条记录(如果有)。参考资料:非常感谢您的见解
class HomeController < ApplicationController
  def index
    @featured_article = Article.unscoped.order(cached_weighted_total: :desc).limit(1)
    @article = @featured_article.last
    @categories = Category.all.ordered_by_priority
  end
end
require 'rails_helper'

feature 'User signs in' do
  background do
    User.create(name: 'Jane Doe', username: 'jodi')
  end

  scenario 'with username' do
    visit login_path

    fill_in 'Username', with: 'jodi'


    click_on 'Log in'

    expect(page).to have_content 'Log Out'
  end
end
  background do
    User.create(name: 'Jane Doe', username: 'jodi')
    Article.create(title: 'Your Title', etc...)
  end