如何在rsepc-mock中使用shared_examples_for?我已经尝试了很多次但是失败了。请帮忙吗?在线等

时间:2013-11-18 20:04:15

标签: ruby-on-rails rspec mocking

我是Rspec的新生

it "should not ask the database" do
  @sqlite_database.should_not_receive(:findISBN)
  @result = @cache.findISBN('1234') 
  @result.should eql(@book) 
end

it "should not ask the database" do
  @sqlite_database.should_not_receive(:authorSearch)
  @result = @cache.authorSearch('author') 
  @result.should eql(@book) 
end

以下是两个不同的第1部分:findISBN和:authorSearch 2 findISBN('1234')和authorSearch('author')

我尝试使用let但它不起作用,谁可以帮忙?

@sqlite_database = double()  @cache = SQLiteDataBaseWithCache.new(@sqlite_database)
 这是真的,我来自java背景。你的编码显示了一些警告:语法错误,意外':',期待keyword_end(SyntaxError)。我对此没有理想

1 个答案:

答案 0 :(得分:0)

没有关于@sqlite_database,@ cache等变量的更多细节,很难说明发生了什么,但是下面应该有效

可能是堆栈跟踪有帮助

以下是共享示例的概念:)

shared_examples "it should not ask database" do |symbol, params| 
 it "should not ask the database" do
   @sqlite_database.should_not_receive(symbol)
   @result = @cache.send symbol, params 
   @result.should eql(@book) 
 end
end

it_behaves_like "it should not ask the database", :findISBN, '1234'
it_behaves_like "it should not ask the database", :authorSearch, 'author'

并且在旁注中,你的方法签名不是红宝石......在红宝石中我们通常不使用驼峰案例

所以在ruby / rails中它应该是author_search,可能你来自java背景:)