Jac*_*lyn 5 ruby rspec ruby-on-rails guard
我正试图在RSpec中测试一个Rails控制器问题(尽管我不确定这个问题与我的问题有关),所以我想我会使用一个匿名控制器.这是我的设置:
describe MyConcern do
controller do
include MyConcern
def edit
puts "Checkpoint!"
@value = concern_method
render text: "test edit method called"
end
end
it "should call concern_method" do
get :edit, id: 1
assigns(:value).should eq "expected_value" # Set by concern_method
end
end
Run Code Online (Sandbox Code Playgroud)
现在这里是奇怪的部分.我用Guard测试.当Guard检测到spec文件的保存并运行此测试时,它会通过并Checkpoint!打印.每次,完全确定.我可以继续保存文件,它不断传递.(如果有帮助,Guard使用Spring并运行RSpec.)
但是当我使用RSpec命令运行测试时,它会失败.最奇怪的是,我原本预计会发生失败,因为匿名控制器设置会发生一些奇怪的事情并且无法找到路线,而是should测试失败了.当我以这种方式手动运行RSpec时,Checkpoint!永远不会打印,表明匿名控制器操作未被调用.但是因为我没有得到路由错误,所以必须调用一些控制器动作,但我不知道是什么,因为我甚至没有任何其他匿名控制器具有edit可能发生冲突的功能.我试过重启春天 - 没有运气.
关于我可能做错什么的任何想法?
编辑:
这是更多信息.我担心的格式是这样的:
module MyConcern
extend ActiveSupport::Concern
included do
puts "Included!"
private
def concern_method
puts "Method is called!"
"expected_value"
end
end
end
Run Code Online (Sandbox Code Playgroud)
当测试失败时(从我明确地运行RSpec bundle exec rspec),我得到一个非常典型的失败消息:
Failure/Error: assigns(:value).should eq "expected_value"
expected: "expected_value"
got: nil
(compared using ==)
Run Code Online (Sandbox Code Playgroud)
我的Guardfile的顶部只是guard :rspec, cmd: 'bundle exec spring rspec --color',即使spring从该命令中删除,这种行为也是一样的.我真的不知道如何调试这个.
我认为它controller接收一个将用作基类的参数,如果您不传递一个参数,它将使用您的东西describe。所以你的测试很可疑:)
尝试:
controller(ApplicationController) do
...
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
603 次 |
| 最近记录: |