Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rspec-如何在服务层测试模块_Rspec_Rspec Rails - Fatal编程技术网

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

我的服务层(app/services/article_service.rb)中有ArticleService模块,我想测试这个模块和方法。以下是rspec代码。结果是错误的。我想原因是测试没有调用
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。