Rspec,不能在我的类中为ruby gem调用一个方法,错误:ruby NoMethodError:状态:: Page:模块的未定义方法`pull'

时间:2018-06-18 17:32:26

标签: ruby rspec

如何在一个gem的rspec测试中调用我的主类中的方法?

我已经看到过像这样的其他问题,但没有一个问题对我有帮助,所以我问这个问题。

我尝试为我正在创建的gem编写rspec测试(我不使用Rails),但是我无法调用主文件中的方法:

require "status/page/version"
require 'thor'
require "nokogiri"
require 'open-uri'
require 'date'

module Status
  module Page
    class CLI < Thor
      desc "pull", "query website status"
      def pull
      .....

这就是我在page_specs.rb文件中调用的方式:

RSpec.describe Status::Page do
  it "has a version number" do
    expect(Status::Page::VERSION).not_to be nil
  end

  it "does something useful" do
    expect(true).to eq(true)
  end

  it "it should output to a file on pull" do
    msg = Status::Page.pull
    expect(msg).not_to be nil
  end

end

有人可以告诉我如何在我的情况下调用Rspec中的方法吗?

由于

1 个答案:

答案 0 :(得分:3)

尝试Status::Page::CLI.new.pull

pull是类Status::Page::CLI上的实例方法,因为它是一个实例方法,您需要使用.new实例化该类。

由于该类继承自Thor,因此对.new的调用确实通过了Thor::Base.initialize。但是从文档来看,它看起来像是为所有参数设置了默认值,所以只调用.new而不用args就足够了。