Я пробую разные блоги с примерами Rails 3 и RSpec. Да, это на Windows, поэтому ответ не использует Windows. В этом нет выбора. Идем дальше ...
Я могу запустить спецификацию либо с rspec spec, либо с rake spec: models, так что это выглядит нормально. Однако, если я попытаюсь использовать блок before с атрибутами, он не сможет создать класс Person с этими атрибутами. Остальные тесты просто показывают, что спецификации могут работать.
Сделал модель Person, затем обновил спецификацию
\ MyApp \ Spec \ модели \ person_spec.rb
require 'spec_helper'
describe Person do
before(:each) do
@valid_attributes = {
:first_name => "Foo",
:last_name => "Bar"
}
end
it "should create a new instance given valid attributes" do
Person.create!(@valid_attributes)
end
it "can be instantiated" do
Person.new.should be_an_instance_of(Person)
end
it "can be saved successfully" do
Person.create.should be_persisted
end
#pending "add some examples to (or delete) #{__FILE__}"
end
Вот вывод rake spec: models команда
C:\Users\laptop\Documents\Sites\myapp>rake spec:models
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb
Person
←[31m should create a new instance given valid attributes (FAILED - 1)←[0m
←[32m can be instantiated←[0m
←[32m can be saved successfully←[0m
Failures:
1) Person should create a new instance given valid attributes
←[31mFailure/Error:←[0m ←[31mPerson.create!(@valid_attributes)←[0m
←[31mActiveRecord::UnknownAttributeError:←[0m
←[31munknown attribute: first_name←[0m
←[36m # ./spec/models/person_spec.rb:13:in `block (2 levels) in <top (required)>'←[0m
Finished in 0.074 seconds
←[31m3 examples, 1 failure←[0m
Failed examples:
←[31mrspec ./spec/models/person_spec.rb:12←[0m ←[36m# Person should create a new instance given valid attributes←[0m
rake aborted!
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb failed
Итак, двое из трех прошли просто не тот, у кого есть атрибуты.
Что-нибудь конкретное, что нужно будет настроить для запуска блока before или как атрибуты передаются в тесте с Rails 3?
Также есть ли способ избавиться от этих] 31 м и такие распечатки для каждой линии спецификации?
Спасибо