Skip to content

Calling invoke directly in RSpec breaks with required class_options, even when they are provided. #811

@WriterZephos

Description

@WriterZephos

I am trying to test my Thor tasks and running into an issue. I have the following option defined on my Thor class:

class_option :file_path, required: true, type: :string, aliases: :f

and in my tests I have:

  let(:options){
    {
      :file_path => "v_1.0.0/chapter_1/content.md"
    }
  }
  
  ...
  
  
    it "does a dry run render of html" do
      expect{ ::MyThorTask.new.invoke(:foo, [], options) }.to output(...).to_stdout
    end

Which give me this error:

     Thor::RequiredArgumentMissingError:
       No value provided for required options '--file-path'

But I can run the Thor task in the terminal just fine, so I think there is something broken with invoke.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions