Ruby on rails 什么';“跑步的区别是什么?”;rspec规范“;及;rspec规范/控制器“;

Ruby on rails 什么';“跑步的区别是什么?”;rspec规范“;及;rspec规范/控制器“;,ruby-on-rails,rspec,Ruby On Rails,Rspec,我有一个非常有趣的问题。当我使用rspec spec/controllers运行我的规范时,它们都通过了。当我使用rspec spec运行它们时,它们失败了 以下是他们失败的原因: ✗ rspec spec F........... Failures: 1) PeopleBridge::OAuthController GET login redirects Failure/Error: cookies.clear NoMethodError: unde

我有一个非常有趣的问题。当我使用
rspec spec/controllers
运行我的规范时,它们都通过了。当我使用
rspec spec
运行它们时,它们失败了

以下是他们失败的原因:

✗ rspec spec 
F...........

Failures:

  1) PeopleBridge::OAuthController GET login redirects
     Failure/Error: cookies.clear
     NoMethodError:
       undefined method `stringify_keys' for nil:NilClass
     # ./spec/controllers/people_bridge/o_auth_controller_spec.rb:9:in `block (3 levels) in <top (required)>'

Finished in 0.04187 seconds
12 examples, 1 failure
✗ rspec规范
F
失败:
1) PeopleBridge::OAuthController获取登录重定向
失败/错误:cookies.clear
命名错误:
nil:NilClass的未定义方法“stringify\u keys”
#./spec/controllers/people\u bridge/o\u auth\u controller\u spec.rb:9:in'block(3层)in'
以0.04187秒完成
12例,1例失败

我强烈怀疑我所犯的错误不是重要的部分。我已经花了很长时间从兔子洞里钻下去了。我现在好奇的是运行
rspec spec/controllers
rspec/spec
之间有什么区别?

基本上,
rspec
之后指定的只是rspec将要运行的文件或文件目录


出现错误的原因可能是在测试执行失败之前执行了某些操作,这些操作是在spec/controllers目录之外执行的。

使用
rspec spec
所有测试都在运行,而不仅仅是控制器测试。我可以想象,控制器和另一个测试之间存在着意外的关联,只有在您运行整个测试套件时,该测试才会运行。可能某些内容已初始化或未正确清理

尝试指定不同的测试组合,以找出导致问题的原因。

请尝试此操作

bundle exec rake spec

这根本没有输出任何东西。事实证明,我是在另一个测试中使用_interference_access对哈希进行猴子修补的,这就是导致问题的原因。确认!猴子在测试中打补丁。如果您需要在单元测试中更改activesupport以使其通过,您是否真的在测试您的应用程序?