Rspec-如何在服务层测试模块
我的服务层(app/services/article_service.rb)中有ArticleService模块,我想测试这个模块和方法。以下是rspec代码。结果是错误的。我想原因是测试没有调用Rspec-如何在服务层测试模块,rspec,rspec-rails,Rspec,Rspec Rails,我的服务层(app/services/article_service.rb)中有ArticleService模块,我想测试这个模块和方法。以下是rspec代码。结果是错误的。我想原因是测试没有调用ArticleService.create,但我不知道怎么做 module ArticleService module_function def create Article.update(publish: 1) end end
ArticleService.create
,但我不知道怎么做
module ArticleService
module_function
def create
Article.update(publish: 1)
end
end
require 'rails_helper'
describe ArticleService do
describe '#create' do
it 'update article publish' do
article = create(:article, property: 0)
expect(article.publish).to eq 1
end
end
end
我不知道我是否明白这是怎么回事
Article.update(publish:1)
正在调用类方法.update
。。。它怎么知道要更新哪个文章
实例呢?啊,这就是重点。。。我不知道如何调用这个方法。如果可以的话,我可以传递一些参数,例如,你可以用模块作为接收器来调用它ArticleService.create
如果需要传递参数,可以这样做ArticleService.create(id:123)
,然后在服务def create(options)
和方法引用article=article.find(options[:id])
是否类似于ArticleService.create(id:123)在before语句中还是在it语句中?您正在it
语句中创建文章,因此无法运行ArticleService。在before语句中创建,因为此时您不知道新文章的id。