В этом случае лучше использовать переменные @instance
и использовать let(:object)
. Но как написать тест последовательностей вызовов, где каждый шаг требует предыдущего состояния, но не чистого состояния.
Я бы хотел написать такой код:
describe "intearction" do
let(:user1) { ... }
let(:user2) { ... }
it "request" do
get "/api/v1/request", {user2}, token(user1)
expect(...).to ...
end
it "confirm" do
get "/api/v1/confirm", {user1}, token(user2)
expect(...).to ...
end
end
Но это не сработает. Он может работать только следующим образом:
describe "intearction" do
let(:user1) { ... }
let(:user2) { ... }
it "all tests" do
# request
get "/api/v1/request", {user2}, token(user1)
expect(...).to ...
# confirm
get "/api/v1/confirm", {user1}, token(user2)
expect(...).to ...
end
end
it
становится непригодным, а имена тестов становятся комментариями или помещаются в консоль. Подсистема rspec теряет свою цель. Использование переменных @instance
- это плохая практика, есть ли какая-либо функция определения типа let
, которая не создает новую обычную переменную для каждого теста, но для каждой группы тестов?
Последовательности и api существуют не первый год. Что касается вашей практики тестирования последовательностей?