2010-11-23 30 views
13

Yöntem çağırma yönteminde yöntemlerden birinin belirli bir parametre aldığını test etmeye çalışıyorum. Aşağıdaki kodda örneğin MyModel offset yöntemi için 0 parametresini almalıdır. Maalesef aşağıdaki kod çalışmıyor. Should_receive ve stub_chain karıştırmak mümkün değil gibi görünüyor. Bunu nasıl çözebilirim? Ayrıca RSpec Google Grubu ile ilgili soru haberi stub_chain should_receive ile birlikte

David (RSpec yaratıcısı

tags = taggable.tag_counts.offset(page-1).limit(per_page).where(*where_clause).order("count DESC") 

Güncelleme edildi: Ben RSpec 2.

MyModel.should_receive(:offset).with(0).stub_chain(:tag_counts, :offset, :limit, :order).and_return([]) # does not work! 

kod Testten çalışıyorum kullanıyorum Cevaplandı (teşekkürler David): http://groups.google.com/group/rspec/browse_thread/thread/6b8394836d2390b0?hl=en

cevap

8

Bu, benim teknik özelliklerinden birinde yaptığım bir örnektir. Biraz unhandy (birçok çizgilerin nedeni), ama çalışır: gerçekten offset 0 ayarlanır SearchPaginationModel.tag_counts.offset(0).limit(X).where(X).order(X) yılında

SearchPaginationModel.stub(:tag_counts) { SearchPaginationModel } 
SearchPaginationModel.should_receive(:offset).with(0) { SearchPaginationModel } 
SearchPaginationModel.stub_chain(:limit, :where, :order) { [] } 
SearchPaginationModel.stub_chain(:tag_counts, :where, :count).and_return(1) 
SearchPaginationModel.search_tags(:page => "1") 

Bu, örneğin testleri.