我想在我的控制器测试中避免双重调用,以获得更好的性能。 我正在使用Rails。
我的测试是这样的:
before { get :index }
it { expect(response).not_to be_successful }
it { expect(Bugsnag).to receive(:notify)
after { get :index }
我想要的是以下内容,我只需拨打一次GET #index
it { expect(Bugsnag).to receive(:notify)
before { get :index }
it { expect(response).not_to be_successful }
我遇到的问题是expect(class).to receive(:message)
之前需要调用get :index
。
我该如何设置?这可能吗?
答案 0 :(得分:2)
您可以使用partial double:
来完成此操作const async = require("async");
const request = require("request");
let page = 1;
let json;
async.whilst(function () {
// condition here
json.data.length !== 0
},
function (next) {
request(`https://driftrock-dev-test-2.herokuapp.com/purchases?${page}&per_page=20`, function (error, response, body) {
if (!error && response.statusCode == 200) {
json = JSON.parse(body);
console.log(json.data);
console.log(page);
}
page++;
next();
});
},
function (err) {
// All things are done!
});
答案 1 :(得分:0)
更多代码行,但是:
get :index
-
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