Rails tests can't find test_helper

20,154

Solution 1

ruby 1.9.2 removed ".", the current directory, from the load path. I have to do this to get it to work:

require 'test_helper'

and call it like:

ruby -I. unit/person_test.rb 

Solution 2

I was fighting this thing myself today and i dislike the big require with whole path to file and stuff...

In my case it was fault of Rakefile..

so now it looks like this:

require "bundler/gem_tasks"
require "rake/testtask"

Rake::TestTask.new do |t|
  t.libs << "lib"
  t.libs << "test" # here is the test_helper
  t.pattern = "test/**/*_test.rb"
end

task default: :test

I know its old and has answer marked accepted, but maybe this will also help someone :) have a nice day

Solution 3

I've added the following to the top of my test files.

require File.expand_path("../../test_helper", __FILE__)

This restores the previous behavior and allows the call to be simply:

ruby test/unit/person_test.rb

Solution 4

Maybe you should run your test cases in this way:

$ rake test

There is no need to change the "require" statement from generated code if you use rake.

Tested with Ruby 1.9.3 and Rails 3.2.8

Solution 5

If you are creating a gem or engine, running rake test in the test dummy application directory will cause this error. Running rake test in the root of the gem will avoid this.

Share:
20,154
PlankTon
Author by

PlankTon

Updated on July 31, 2022

Comments

  • PlankTon
    PlankTon almost 2 years

    I'm trying to run individual tests through ruby test/unit/mytest.rb, but I always get a "no such file to load - test_helper" error. Google brought up a few suggestions, but none of them worked for me. I'm running Rails 3.0, Ruby 1.9.2 (through RVM) on Ubuntu 10.10

    Here's what I've tried so far - any suggestions really appreciated

    • Changed the "require test_helper" to "require File.dirname(FILE) + "/../test_helper" " in test/unit/mytest_test.rb. It brings back " no such file to load -- test/unit/../test_helper"
    • Tried running rvm test/unit/mytest_test.rb Same as above
    • Tried running ruby -I test/unit/mytest_test.rb. No messages to the terminal. After about 5 minutes waiting for something to happen, ctrl+c'd out of it

    Any suggestions very appreciated - I'm stumped.