Я использую RSpec для тестов, и я не знаю, как получить зеленый цвет.
В этом случае у меня есть модель с именем "PartType", которая содержит атрибут с именем "цитата".
Значение для цитаты берется из формы, поэтому это будет строка.
Чтобы продемонстрировать, что вы можете перейти к консоли и наберите:
(1..1000).includes?("50") # false
, но ..
(1..1000).includes?(50) # true
И это значение может иметь десятичные дроби.Поэтому мне нужно было сделать «type_cast».
У меня есть это на моей PartType
модели:
before_validation :fix_quotation, :if => :quotation_changed?
protected
def fix_quotation
self[:quotation] = quotation_before_type_cast.tr(' $, ' , '.' )
end
Это работает, как и ожидалось, НО, когда вы идете на тесты, это не получается.
Вот мой part_type_spec.rb
:
require 'spec_helper'
describe PartType do
before(:each) do
@attr = { :title => "Silver", :quotation => 100 }
end
it "should create a instance given a valid attributes" do
PartType.create!(@attr)
end
it "should accept null value for quotation" do
PartType.new(@attr.merge(:quotation => nil)).should be_valid
end
it "should accept 0 value for quotation" do
PartType.new(@attr.merge(:quotation => 0)).should be_valid
end
end
И, наконец, неудачные тесты:
Failures:
1) PartType должен создать экземпляр с заданными допустимыми атрибутами Failure / Error: PartType.create! (@ Attr) NoMethodError: неопределенный метод tr' for 100:Fixnum
# ./app/models/part_type.rb:7:in
fix_quotation '# ./spec/models/part_type_spec.rb:10:in `блок (2 уровня) в'
2) PartType долженпринять значение 0 для цитаты Ошибка / Ошибка: PartType.new (@ attr.merge (: quotation => 0)). should be_valid NoMethodError: неопределенный метод tr' for 0:Fixnum
# ./app/models/part_type.rb:7:in
fix_quotation '# ./spec/models/part_type_spec.rb:18:в блоке (2 уровня) в '
Завершено за 0,06089 секунды 3 примера, 2 ошибки