Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Ruby on rails 我可以避免在Rspec测试中调用控制器两次吗?_Ruby On Rails_Ruby_Rspec - Fatal编程技术网

Ruby on rails 我可以避免在Rspec测试中调用控制器两次吗?

Ruby on rails 我可以避免在Rspec测试中调用控制器两次吗?,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,为了获得更好的性能,我希望在控制器测试中避免双重调用。 我正在使用Rails 我的测试是这样的: 在{get:index}之前 它{expect(response.not_'successful} 它{expect(Bugsnag).接收(:notify) 在{get:index}之后 我想要的是下面这样的东西,我只需要一次调用GET#index it{expect(Bugsnag).接收(:notify) 在{get:index}之前 它{expect(response.not_'succe

为了获得更好的性能,我希望在控制器测试中避免双重调用。 我正在使用Rails

我的测试是这样的:

在{get:index}之前
它{expect(response.not_'successful}
它{expect(Bugsnag).接收(:notify)
在{get:index}之后
我想要的是下面这样的东西,我只需要一次调用
GET#index

it{expect(Bugsnag).接收(:notify)
在{get:index}之前
它{expect(response.not_'successful}
我遇到的问题是,
expect(class.)。要接收(:message)
需要在
get:index
之前调用


如何设置?这可能吗?

更多代码行,但:

  • 没有双重调用
    get:index
  • 现在每个示例都有一个描述
-


更多代码行,但:

  • 没有双重调用
    get:index
  • 现在每个示例都有一个描述
-

您可以使用以下工具来完成此操作:

您可以使用以下工具来完成此操作:


所以,我无法摆脱一个
get:index
调用,你是说?在你的例子中,事实上你调用它不是2次,而是4次(在每个请求之前和之后x2),所以,我无法摆脱一个
get:index
调用,你是说?在你的例子中,事实上你调用它不是2次,而是4次(在每个请求之前和之后x2)在旁注上-
它{should\u not successful}
不是测试“失败”场景的好方法,因为如果应用程序坏了,它会通过。相反,你想测试该应用程序返回正确的响应代码,如401或403和/或重定向。在旁注上-
它{should\u not successful}
不是测试“失败”场景的好方法,因为如果应用程序出现故障,它将通过。相反,您希望测试该应用程序返回正确的响应代码,如401或403和/或重定向。
it 'is not successful' do
  get :index
  expect(response).not_to be_successful
end

it 'notifies someone' do
  expect(Bugsnag).to receive(:notify)
  get :index
end
before do
  allow(Bugsnag).to receive(:notify)
  get :index
end
subject { response }
it { should_not be_successful }
it "notifies Bugsnag" do
  expect(Bugsnatch).to have_received(:notify)
end