【发布时间】:2014-12-30 03:05:56
【问题描述】:
Double received unexpected message 尝试运行以下规范时报告失败/错误:
MyKlass
does something
does something again (FAILED - 1)
Failures:
1) MyKlass does something again
Failure/Error: MyKlass.do_something
Double "OtherKlass" received unexpected message :closed? with (no args)
# ./lib/my_klass.rb:5:in `do_something'
# ./spec/my_klass_spec.rb:17:in `block (2 levels) in <top (required)>'
Finished in 2.05 seconds
2 examples, 1 failure
Failed examples:
rspec ./spec/my_klass_spec.rb:16 # MyKlass does something again
这是一个简单的示例,可以轻松重现此问题...
规格文件spec/my_klass_spec.rb:
1 require "spec_helper"
2
3 class OtherKlass; end
4
5 describe MyKlass do
6 let(:objekt) { double("OtherKlass", closed?: "NOT REALLY") }
7
8 before :each do
9 OtherKlass.stub(:get_objekt).and_return(objekt)
10 end
11
12 it "does something" do
13 MyKlass.do_something
14 end
15
16 it "does something again" do
17 MyKlass.do_something
18 MyKlass.do_something
19 end
20 end
还有代码lib/my_klass.rb:
1 class MyKlass
2 @@klass_var = nil
3
4 def self.do_something
5 if @@klass_var.blank? || @@klass_var.closed?
6 @@klass_var ||= OtherKlass.get_objekt
7 end
8 end
9 end
我不明白为什么closed? 被报告为意外消息,当它在我的规范文件的第 6 行存根时。
非常感谢您的帮助!
【问题讨论】:
-
你看过吉姆的回答了吗?我不认为你可以在类方法上使用 double - stackoverflow.com/a/15252724/3109182
-
您使用的是哪个版本的 rspec 和 ruby?
-
Rails 4.1.6 和 Rspec 2.14.1。
标签: ruby-on-rails ruby rspec rspec-rails