2011-01-30 68 views
17

试图找到但没有成功。只是想知道我怎么能在Rails 3中测试示波器。如何测试示波器?

可能使用rspec,shoulda或者只是一个测试单元。

谢谢。

其实,我试过这种方式,但它不是完整的测试,因为它仍然需要放置order()方法。

范围:

scope :recents_available, where(:available => true, :locked => false).order("created_at DESC") 

describe Job, ":recents_available" do 

it "should have the scope" do 
    Job.should respond_to(:recents_available) 
end 

it "should include recents jobs that are available and unlocked" do 
    @job = Factory(:job, :available => true, :locked => false )  
    Job.recents_available.should include(@job) 
end 

回答

25

大卫赫利姆斯基(Rspec的创建者)在Rspec Google Group提供了下面的例子:

describe User, ".admins" do 
    it "includes users with admin flag" do 
    admin = User.create! :admin => true 
    User.admin.should include(admin) 
    end 

    it "excludes users without admin flag" do 
    non_admin = User.create! :admin => false 
    User.admin.should_not include(non_admin) 
    end 
end 

class User < ActiveRecord::Base 
    named_scope :admins, :conditions => {:admin => true} 
end 

这显然不一样的例子是你的,但它应该给你如何做到这一点的想法。上下文的相关线程在这里:http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f

4

我敢肯定有一个更好的解决方案,但我一直只是设置一些对象应该和不应该在我的范围。在调用范围之后,我检查返回的对象是否应该,并且没有它不应该的对象。

如果有任何问题,我希望能够通过其他答案获得启发。

+0

设置两个边界情况并测试你的方法(这是什么范围真的是一个优雅的测试解决方案,所以不要担心使用上述答案 – Houen 2011-08-27 12:17:42