我想使用rake任务在我的数据库中播放一些用户数据以进行手动测试。由于我的表和业务逻辑的复杂性,我这样做的最简单方法是从rake任务执行POST到我的user_controller。使用RSpec(和FactoryGirl),我可以做到
describe "POST create" do
it "registers a new user" do
@request.env["devise.mapping"] = Devise.mappings[:user]
user = attributes_for(:user)
response = post( :create, user: user)
response.status.should eql(200)
end
end
我如何使用'帖子'我的佣金任务中的助手?
答案 0 :(得分:2)
创建lib/tasks/seed_post.rake
文件的名称并不重要
并将以下代码放入其中
namespace :seed do
task :posts => :environment do
50.times do |i|
# it's your own problem to generate the following user, params so that it works
Post::CreationService.perform(user, params)
end
end
end
现在您可以使用.. rake seed:posts
或zeus rake seed:posts
或bundle exec rake seed:posts
来调用该任务,具体取决于您使用的是zeus还是捆绑包还是其他...
真正重要的是你的电话应该采用
的形式 rake namespace_you_defined:task_name_you_defined
您还必须将控制器创建更改为
def create
@post = Post::CreationService.perform(current_user, post_params)
# instead of this old code i'm assuming you are using
@post = current_user.posts.create!(post_params)
...
end
还要添加此文件
# app/services/post/creation_service.rb
class Post::CreationService
def self.perform(current_user, params)
current_user.posts.create!(params)
end
end