使用rspec中的传递参数测试rake任务
在rspec中,我想测试一个rake任务,传入一些参数,所以在命令行中你会运行这个:
rake commissions:create_price_points options=1,2,3
在rake任务中我使用ENV [‘options’]。
在我的rspec中我有
rake = get_rake_environment(RAKE_FILE) rake["commissions:create_price_points"].invoke(options=1,2,3)
这运行rake很好,但是这个,以及我用invoke和execute做的其他尝试,都没有将选项传递给它。 只是想知道是否有人对如何做到这一点有任何见解。 谢谢!
传递给invoke
方法的参数与rake命令行中传递的参数不同。 在RSpec中,它是Ruby,表达式options=1,2,3
将数组[1,2,3]
分配给局部变量options
并传递该数组以进行invoke
。 当被invoke
方法接收时,该数组被视为rake任务的forms参数。 (有关此方法的更多信息,请参阅https://stackoverflow.com/a/825832/1008891 。)
由于您的rake任务期望设置环境变量options
,因此您需要在调用它之前设置它,如:
ENV['options'] = '1,2,3'