Я только недавно обновил свою модель полями attr_accessible
, и внезапно некоторые тесты не сработали, как я и ожидал. Тем не менее, у меня есть спецификации как:
context "when user buys a game item" do
let(:inventory) {@user.inventory << Factory(:inventory)}
it "should present an error if the id ..." do
GameItem.stub(:find_by_id).and_return(Factory(:game_item))
@user.inventory.should == 1 # TEST
post :buy, :id => (game_item.id + 1)
flash[:error].should == I18n.t('error.invalid_post')
response.should redirect_to melee_url('Weapon')
end
end
Строка @user.inventory.should == 1
- это просто проверка, которую я сделал сейчас. Инвентарь по какой-то причине составляет nil
. Это происходит из-за операции <<
? Я полагаю, что это наиболее вероятно из-за атрибута inventory_id модели User.
Я должен сказать, что attr_accessible
обычно кажется мне хаком, и мне это не нравится, хотя я понимаю, почему его следует использовать. Как вы думаете, это так? Если так, как я могу избежать этой проверки?