Ruby on rails 我可以避免在Rspec测试中调用控制器两次吗?
为了获得更好的性能,我希望在控制器测试中避免双重调用。 我正在使用Rails 我的测试是这样的: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
在{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