我使用Rspec来测试我的Rails应用程序。在我的Model目录中,我有一个名为location_services.rb的Ruby文件。在这个文件是
module LocationServices
class IpLocator
attr_reader :response, :status
def initialize(response, status)
....
end
end
如何自行测试IpLocator对象的创建?我只是想能够调用IpLocator.create_type_1.response并测试我在整个rails堆栈中获得的内容。
create_type_1是IpLocator上的一个类方法,它将调用new来实现一个对象。
答案 0 :(得分:2)
我假设您的文件看起来更像是这样:
module LocationServices
class IpLocator
attr_reader :response, :status
def initialize(response, status)
....
end
def self.create_type_1
self.new
# Possibly some more code here
end
end
end
您可以创建spec/models/location_services_spec.rb
并将其结构如下:
require 'spec_helper'
describe LocationServices::IpLocator do
describe '.create_type_1' do
locator = LocationServices::IpLocator.create_type_1
expect(locator).to # finish your assertion here
end
end
命名约定可能无法正常工作。如果RSpec找不到所需的类,您可以尝试移动并将location_services.rb
重命名为app/models/location_services/ip_locator.rb
。如果您这样做,请将规范移动并重命名为spec/models/location_services/ip_locator_spec.rb
。
但是,要求spec_helper.rb
文件可能会为您的测试加载Rails堆栈。这可能取决于您的文件设置方式。