此问题已被弃用,因为我删除了gem并自行实现了该功能。
我有一些单独运行时会传递的规格。但是当作为整个套件(或整个spec文件)运行时,只有第一个传递,而其他传递失败。
以下是有问题的公关:https://github.com/jmuheim/base/pull/75
我认为这与添加的clerk
gem有关。
只需运行rspec ./spec/features/pages/show_spec.rb
,结果就是:
6 examples, 5 failures
Failed examples:
rspec ./spec/features/pages/show_spec.rb:81 # Showing page offers links to browse page by page (previous page / next page) like a book
rspec ./spec/features/pages/show_spec.rb:246 # Showing page versioning generates a diff view
rspec ./spec/features/pages/show_spec.rb:227 # Showing page versioning displays empty versions if available
rspec ./spec/features/pages/show_spec.rb:121 # Showing page versioning displays versions if available (if authorized)
rspec ./spec/features/pages/show_spec.rb:111 # Showing page versioning doesn't display versions if none available
当单独运行它们时,它们通过,例如, rspec ./spec/features/pages/show_spec.rb:121
:
1 example, 0 failures
似乎存在一些依赖性问题,或者数据库可能无法正确重置,或类似的情况。
以下是问题的屏幕截图,用户(创建者/更新者)似乎不存在:
答案 0 :(得分:1)
我的猜测是您必须有current_user
(或User.current
),因此clerk
可以设置creator
/ updater
属性。
在您的规范中,您应该为User.current
创建存根。简单的例子:
before do
test_user = User.create!(name: 'test')
allow(User).to receive(:current).and return(test_user)
end
编辑:您的测试套件中可能有一些初始化代码设置User.current
,但它不会被调用。