问题描述
我的黄瓜功能绝大多数需要用户登录。但是我真的不需要测试每个单一测试的登录功能。我目前正在使用Devise进行身份验证。
The vast majority of my cucumber features require the user to be logged in. However I don't really need to test the login functionality for every single test. I'm currently using Devise for my authentication.
我正在寻找一种使用设计来签署用户的方法,而无需填写登录表单。有没有做到这一点?我希望不必在每次测试中使用sign in action。
I'm looking for a way to sign a user in with devise, without filling out the sign in form. Is there anyway to do this? I would prefer to not have to use the sign in action for every test.
推荐答案
不,没有办法。在中,关于 sign_in @user
和 sign_out @user
帮助方法,它说:
No, there is no way. In the documentation, with regard to the sign_in @user
and sign_out @user
helper methods, it says:
正如你自己说的,使用 before:each
block。我喜欢如下结构:
As you said yourself, it is probably cleanest to do it with a before :each
block. I like to structure it like the following:
context "login necessary" do
# Before block
before do
visit new_user_session_path
fill_in "Email", with: "[email protected]"
fill_in "Password", with: "password"
click_button "Login"
assert_contain "You logged in successfully."
end
# Actual tests that require the user to be logged in
it "does everything correctly" do
# ...
end
end
context "login not necessary" do
it "does stuff" do
# code
end
end
我发现这是非常有用的,因为如果我更改身份验证规则(即用户是否必须登录一个特定的路径)我可以只进行整个测试,并将其移动到其他描述块,而不改变任何更多的代码。
I found this to be quite useful, since if I change authentication rules (i.e. whether or not the user has to be logged in for a specific path) I can just take the whole test and move it into the other description block, without changing any more code.
这篇关于使用Cucumber,有没有一种方法来记录用户没有接口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!