在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进行的其他尝试都没有将选项传递给它。只是想知道是否有人对如何做到这一点有任何见解。谢谢!
答案 0 :(得分:2)
传递给invoke
方法的参数与rake命令行中传递的参数不同。在RSpec(Ruby)中,表达式options=1,2,3
将数组[1,2,3]
分配给局部变量options
,并将该数组传递给invoke
。当被invoke
方法接收时,该数组被视为rake任务的正式参数。 (有关此方法的更多信息,请参阅https://stackoverflow.com/a/825832/1008891。)
由于您的rake任务期望设置环境变量options
,因此您需要在调用之前设置它,如:
ENV['options'] = '1,2,3'