我正在使用Mocha进行测试。
2.1.5 :047 > require 'mocha'
=> false
AFAIK意味着mocha
已经加载,应该没问题。无论如何,当嘲笑或抄袭时:
2.1.5 :048 > mock
NameError: undefined local variable or method `mock' for main:Object
from (irb):48
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:90:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:9:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:69:in `console'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands.rb:17:in `<top (required)>'
from ./test/dummy/bin/rails:4:in `require'
from ./test/dummy/bin/rails:4:in `<main>'
2.1.5 :049 > Github.expects :repos
NoMethodError: undefined method `expects' for Github:Module
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/github_api-0.12.3/lib/github_api.rb:56:in `method_missing'
from (irb):49
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:90:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:9:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:69:in `console'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands.rb:17:in `<top (required)>'
from ./test/dummy/bin/rails:4:in `require'
from ./test/dummy/bin/rails:4:in `<main>'
2.1.5 :051 > stub
NameError: undefined local variable or method `stub' for main:Object
from (irb):51
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:90:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/console.rb:9:in `start'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:69:in `console'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
from /home/dawid/.rvm/gems/ruby-2.1.5/gems/railties-4.1.10/lib/rails/commands.rb:17:in `<top (required)>'
from ./test/dummy/bin/rails:4:in `require'
from ./test/dummy/bin/rails:4:in `<main>'
模拟是否应该在IRB中起作用?
答案 0 :(得分:1)
在我加入Mocha::API
之前,我遇到了同样的错误。这将include适当的Mocha方法提供给您的Object
,Module
,Class
类,并为您的irb会话添加错过的功能:
$ irb
Welcome to IRB. You are using ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]. Have fun ;)
>> require 'mocha/api' #=> true
>> include Mocha::API #=> Object
>> mock #=> #<Mock:0x2da1ce8>
>> stub #=> #<Mock:0x2d6a680>
>> Object.expects :something #=> #<Expectation:0x256e878 expected exactly once, not yet invoked: Object.something(any_parameters) >