测试失败,因为未定义gems方法

时间:2016-03-30 11:37:14

标签: ruby-on-rails factory-bot minitest

我正在为rails应用程序编写测试并继续收到以下错误,这与此UK postcode validator gem有关:

Error:
    OrganisationsControllerTest#test_0001_should get index:
    NoMethodError: undefined method `full_valid?' for # <UKPostcode::GeographicPostcode:0x007fe405e6caf8>
app/validators/postcode_validator.rb:4:in `validate_each'
test/controllers/organisations_controller_test.rb:7:in `block in <class:OrganisationsControllerTest>'

错误是指FactoryGirl实例化的行和对象在测试中使用。这是工厂使用的:

FactoryGirl.define do
  factory :organisation do
    name 'Acme Corp'
    address_1 'Acme House'
    address_2 '40 - 44 Harvard Road'
    address_3 'Archingdon'
    town 'Exeter'
    postcode 'EX4 6PX'
    phone_number '03309 890890'
    email 'hello@acme.com'
    linkedin_url 'https://linkedin.com/acmecorp'
    twitter_handle 'acmecorp'
    facebook_url 'https://facebook.com/acmecorp'
    website 'https://www.acmecopr.com'
  end
end

我认为错误是因为我需要require某个地方的图书馆,但我似乎找不到合适的地方。到目前为止,我已将require 'uk_postcode'添加到工厂定义的文件中,即失败的控制器测试类和test_helper.rb。

如何停止此错误?

任何帮助非常感谢:)

1 个答案:

答案 0 :(得分:1)

看起来不需要出错。它无法找到full_valid? UKPostcode :: GeographicPostcode对象实例上的方法。可能是因为宝石的版本没有这种方法。

查看here以了解如何验证它。打开控制台并创建一个新的 UKPostcode :: GeographicPostcode对象并验证方法是否存在。