我是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)。我对此没有理想
答案 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背景:)