Używam programu rspec i próbuję sprawdzić, czy mój model y ma wiele wartości x. Próbowałem różnych rzeczy, w tym pętli w tablicy metod i nie mogę znaleźć dobrej metody online. Więc co powinienem użyć?Jak mogę przetestować dla belongs_to i has_many w Railsach?
8
A
Odpowiedz
19
Bez dużo włamań można użyć niezwykły klejnot: http://github.com/carlosbrando/remarkable
Zrobione z niezwykłych docs:
describe Post do
it { should belong_to(:user) }
it { should have_many(:comments) }
it { should have_and_belong_to_many(:tags) }
end
6
Można zastanowić się nad Klasa:
MyModel.reflect_on_association(:x).macro == :has_one
to chyba łatwiej, jeśli po prostu użyć shoulda istnieją metody pomocnicze tak czyta o wiele bardziej czysty: it { should have_many(:x) }
1
oto rspec niezależne rozwiązania, Najważniejsze jest, aby używać reflect_on_assocation
class MyModel < ActiveRecord::Base
has_many :children
belongs_to :owner
end
reflection_children = MyModel.reflect_on_association(:children)
if !reflection_children.nil?
if reflection_children.macro == :has_many
# everything is alright
else
# it's not has_many but exists
end
else
# it doesn't exist at all !
end
reflection_owner = MyModel.reflect_on_association(:owner)
if !reflection_owner.nil?
if reflection_owner.macro == :belongs_to
# everything is alright!
else
# it's not belongs_to but exists
end
else
# it doesn't exist at all!
end
Powiązane problemy
- 1. Rails modelu has_many, belongs_to relacji
- 2. ActiveAdmin - generowanie rozwijanej listy w formularzu dla has_many/belongs_to relationship
- 3. has_many migracja asocjacji w Railsach
- 4. szyny has_many: through has_many: through
- 5. Kiedy nastąpi dotknięcie dla funkcji belongs_to w Railsach?
- 6. Szyny has_many i belongs_to relacja z obcym kluczowym błędem
- 7. Szyny: zamów przy użyciu relacji has_many/belongs_to
- 8. Czy has_many wymaga belongs_to po drugiej stronie?
- 9. Tworzenie kontrolerów i widoków dla relacji has_many: through w Railsach 3
- 10. Belongs_to i has_and_belongs_to_many do tej samej tabeli w Railsach
- 11. Jak mogę przetestować dla NaN?
- 12. Problem z samoodnawialnymi has_many: poprzez asocjacje w Railsach
- 13. Jak odzwierciedlić w bazie danych nową właściwość belongs_to i has_many w Ruby on Rails
- 14. Wiele zagnieżdżonych zawiera w Railsach
- 15. ActiveAdmin dostosowywania formularza belongs_to
- 16. Jak wyłączyć default_scope dla belongs_to?
- 17. Czy accepts_nested_attributes_do pracy z belongs_to?
- 18. Ustawienie: has_many: poprzez stowarzyszenia na asocjacji belongs_to Ruby on Rails
- 19. Rails 3 build select tag has_many belongs_to stowarzyszenie
- 20. Jak ustawić rodzaj "belongs_to: through" bez ustawienia bezpośredniego belongs_to?
- 21. Zagnieżdżone atrybuty dla szyn asocjacyjnych belongs_to
- 22. Jak mogę przetestować funkcję pamięci podręcznej rails
- 23. Szyny act_as_paranoid i has_many: do
- 24. Niezdefiniowany metoda dla asocjacji belongs_to
- 25. jak mogę przetestować accepts_nested_attributes_for z rspec Rails3
- 26. Jak mogę przetestować stdin i stdout?
- 27. Mongoid: belongs_to użytkownik i has_one użytkownik
- 28. Uzyskiwanie pól dla pracy z has_many relacje
- 29. Potrzebujesz użyć add_index podczas migracji dla związku belongs_to/has_many? (Rails 3.2, Active Record)
- 30. jak uniknąć duplikatów w relacji has_many: through?
Very nice! Myślę, że mogę zacząć używać tego klejnotu. –
Inną opcją jest Shoulda by thoughtbot, która ma niezwykle podobną składnię. http://github.com/thoughtbot/shoulda –
Remarkable wygląda bardziej kompletnie niż Shoulda. Nie widziałem tego wcześniej. –