在rails中测试时出错

时间:2017-09-21 19:08:43

标签: ruby-on-rails ruby unit-testing

我正在尝试进行单元测试。

测试需要require_relative 'francis'

require 'minitest/autorun'
require_relative 'francis'

class FrancisTest < MiniTest::Test

当我尝试运行rake test TEST=test/francis_test.rb时,我收到错误

(in C:/Users/chris2/Documents/RailsProjects/francis)
rake aborted!
LoadError: cannot load such file -- C:/Users/chris2/Documents/RailsProjects/francis/test/francis
C:/Users/chris2/Documents/RailsProjects/francis/test/francis_test.rb:2:in `require_relative'
C:/Users/chris2/Documents/RailsProjects/francis/test/francis_test.rb:2:in `<top (required)>'
Tasks: TOP => test:single
(See full trace by running task with --trace)

我该如何运行此测试?

更新

我将francis_test.rb移到了项目的根目录。我还注释了require_relative语句。我还必须将设置行更改为@teen = ::Franci.new而不是Francis.new

所以francis_test的开头看起来像

require 'minitest/autorun'
# require_relative 'franci'
require 'test_helper'

class FrancisTest < MiniTest::Test
  attr_reader :teen

  def setup
    @teen = ::Franci.new
  end

  def test_stating
    assert_equal 'Whatevs.', teen.yo('Oh blah di, oh blah da.')
  end

  def test_yelling
    assert_equal 'Chill!', teen.yo('GOOOAAAALLL!')
  end

我似乎需要'test_helper'。

BTW - 我的ruby和rails版本

Rails 4.2.5.1
ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32]

现在,如果我运行rake test TEST=francis_test.rb -v

我看到(部分)

# Running:

FrancisTest#test_stating_with_acronyms = 0.01 s = E
FrancisTest#test_inquiring = 0.00 s = E
FrancisTest#test_question_with_just_numbers = 0.00 s = E
. . . 

Finished in 0.013518s, 1257.5400 runs/s, 0.0000 assertions/s.


  1) Error:
FrancisTest#test_stating_with_acronyms:
ArgumentError: wrong number of arguments (1 for 0)

  2) Error:
FrancisTest#test_inquiring:
ArgumentError: wrong number of arguments (1 for 0)

几个问题

  1. 是attr_reader在Ruby 2.2.4中有效吗?我查看了API,但无法理解它。
  2. 为什么我得到'错误的论点数'?我没有使用attr_reader,但似乎在按照我的方式调用它时,它应该将参数传递给teen.yo.
  3. BTW - 弗朗西斯表只有一列 - '哟'。

2 个答案:

答案 0 :(得分:0)

require_relative通过允许您加载与包含require_relative语句的文件相关的文件来补充内置方法的要求。

例如,如果您在&#34; test&#34;中有单元测试类。目录,以及测试下的数据&#34; test / data&#34;目录,那么你可以在测试用例中使用这样的一行:

require_relative "data/customer_data_1"

答案 1 :(得分:0)

  

attr_reader是否在Ruby 2.2.4中有效?我查看了API但不能   非常理解它。

Yes, it is。但是,您不需要它,因为ActiveRecord会自动将列作为属性提供。

  

为什么我得到'错误的参数数量'?我还没用过   attr_reader但似乎在按照我的方式调用它时,它应该   将论点传递给teen.yo。

要回答这个问题,我需要您francis.rb文件的内容。