在功能测试中,我有2个功能宏:sign_in
和add_to_cart
。用户在没有JS的情况下登录,但对于add_to_cart
,需要JS宏。
规格:
describe 'User add product in cart' do
before { sign_in(user) }
scenario 'and view cart stuff' do
add_to_cart(product, 2)
visit cart_path
end
end
功能宏
module FeaturesMacros
def sign_in(user)
visit sign_in_path
fill_in 'Email', with: user.email
fill_in 'Password', with: user.password
click_button 'Sign in'
end
def add_to_cart(product, quantity)
visit product_path(id: product.id)
fill_in 'line_item_quantity', with: quantity
click_button 'Add to Cart'
end
end
当我在没有JS的情况下运行测试时,错误是
ActionController :: UnknownFormat:LineItemsController #creore缺少此请求格式和变体的模板。
如果我添加JS for scenario 'and view cart stuff', js: true do
,我在用户登录时出错:
失败/错误:访问sign_in_path。
如何在场景中添加JS,但是将其从before
上下文中删除?也许有更好的方法?