如何在测试中运行方法

时间:2019-04-10 12:26:01

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

我只是想在测试中运行一个方法,看看它是否有效。

我在测试类中尝试了以下代码行:

UserPostcodesImport.add_postcodes_from_csv

我的user_postcodes_import_test.rb:

require "test_helper"
require "user_postcodes_import"

class UserPostcodesImportTest < ActiveSupport::TestCase
  it "works" do
    UserPostcodesImport.add_postcodes_from_csv
  end
end

我的user_postcodes_import:

class UserPostcodesImport
  class << self
    def add_postcodes_from_csv
      puts "it works"
    end
  end
end

我希望控制台打印“可以正常工作”,但会打印错误:

NoMethodError: undefined method `add_postcodes_from_csv'

1 个答案:

答案 0 :(得分:0)

所以测试并不是真的那样。在这种情况下,您需要做的就是看一下测试调用并做类似的事情

test "the truth" do
  assert true
end

所以您可能有

class UserPostcodesImportTest < ActiveSupport::TestCase
  it "works" do
    test_string = UserPostcodesImport.add_postcodes_from_csv
    assert !test_string.blank?
  end
end

如果您使用的是rspec,它可能看起来像这样:

class UserPostcodesImportTest < ActiveSupport::TestCase

  {subject = UserPostcodesImport}
  it "works" do
    expect (subject.add_postcodes_from_csv).to_not be_nil
  end
end

类似的东西...在这里检查rspecs语法:https://relishapp.com/rspec/rspec-expectations/docs/built-in-matchers

其中的关键部分是assert,它基本上是触发测试运行的原因。您在问“当我这样做时,它返回true吗?”

我将从这里开始:https://guides.rubyonrails.org/testing.html,以便更好地测试最佳实践。