2017-02-26 1 views
2

Comment puis-je écrire des tests pour des étendues d'enregistrement actives? par exempleComment écrire des tests pour des étendues d'enregistrement actives?

class Post < ActiveRecord::Base 
    scope :recent, -> { order("posts.created_at DESC") } 
    scope :published, -> { where("status = 1") } 
end 

J'utilise Rspec pour tester

RSpec.feature Post, :type => :model do 
    let(:post) { build(:post) } 

    describe 'test scopes' do 
    end 
end 

Répondre

4

En supposant que vous avez la configuration des appareils appropriés, je lance habituellement une requête où j'attends les résultats du champ d'application, et celui où je don 't. Par exemple:

describe '#published' do 
    it "returns a published post" do 
    expect(Post.published.count).to be(1) 
    # or inspect to see if it's published, but that's a bit redundant 
    end 

    it "does not return unpublished posts" do 
    expect(Post.published).to_not include(Post.where("status = 0")) 
    end 
end