Как использовать sure_inclusion_of для произвольного списка - PullRequest
2 голосов
/ 04 апреля 2011

В моем проекте rails у меня есть модель с атрибутом foo. У меня есть vaildation, который гарантирует, что любое значение для Foo находится в массиве. При этом используется проверка с параметром: in.

Я хочу проверить это с помощью rspec / shoulda. Я думаю, что sure_inclusion_of должно проверять эту проверку, но она работает только для диапазонов, а не для массива. Как я могу заставить его работать с массивом или написать свой собственный matcher для этого?

Ответы [ 2 ]

4 голосов
/ 04 апреля 2011

ensure_inclusion_of для проверки, включены ли модули в текущий класс.

Если вы хотите проверить validates_inclusion_of, вы можете либо написать для этого RSpecs самостоятельно, либо установить Shoulda и использовать его макросы.

Здесь я проверяю поле gender в пользовательской модели.

describe User do

  it { should validate_presence_of(:gender) }
  it { should allow_value("male").for(:gender) }
  it { should allow_value("female").for(:gender) }
  it { should_not allow_value("other").for(:gender) }

end
3 голосов
/ 04 октября 2012

Теперь вы можете написать это так:

it { should ensure_inclusion_of(:gender).in_array(%w(male female)) }
...