我试图为我的Thor任务编写一个非常基本的rspec,但是当试图请求(或加载)任务时,它失败了,为各种Thor类级别的方法(desc,method_option,class_option等)提供NoMethodError('undefined method ...')
require "spec_helper"
require Rails.root.join('lib/tasks/test_task.thor')
describe 'TestTask' do
it "is instantiated ok" do
TestTask.new
end
end
字符串
正如你所看到的,我正在一个Rails应用程序的环境中进行测试。
thor任务本身可以从命令行正常执行。
我已经看过了Thor的规范,就像其他地方建议的那样(我在哪里可以找到用RSpec测试Thor脚本的好例子?)
有什么想法吗?
3条答案
按热度按时间6l7fqoea1#
我找到的答案是使用
load
而不是require
(我以为我已经测试过了,但也许我错了)所以:
require 'thor' load File.join(Rails.root.join('lib/tasks/test_task.thor'))
个xfyts7mz2#
在根目录下创建
Thorfile
。每次在项目中运行thor命令时都会加载它。字符串
这将在运行thor任务之前加载所有thor文件。
现在在
rails_helper.rb
中加载Thorfile:型
现在你可以测试你的任务,而不像这样在顶部加载任务:
型
ht4b089n3#
对我来说,这个问题是通过使用
require <file>
而不是require_relative
解决的。