Итак, я новичок в тестировании в Rails, и у меня возникают проблемы с пониманием того, почему этот модульный тест не проходит.По сути, я ожидаю, что этот модульный тест введет одну запись в тестовую базу данных.По какой-то странной причине тест не пройден, и все же две записи добавляются в тестовую базу данных.Это очень странное поведение.Используя 'rails c test' и затем набирая 'Thing.all', это то, что я получаю до запуска теста и после запуска теста.
до теста (после запуска rake db: test:подготовить и затем Thing.all в консоли рельсов):
Thing Load (0.5ms) SELECT "things".* FROM "things"
=> []
После теста:
Thing Load (0.6ms) SELECT "things".* FROM "things"
=> [#<Thing id: 980190962, name: "MyNameAgain", created_at: "2012-01-22 17:34:25", updated_at:
"2012-01-22 17:34:25", description: "MyDescription">, #<Thing id: 298486374, name: "Hello",
created_at: "2012-01-22 17:34:25", updated_at: "2012-01-22 17:34:25", description:
"HelloDescription">]
Итак, вот модульный тест:
require 'test_helper'
require 'awesome_print'
class ThingTest < ActiveSupport::TestCase
setup do
@example = Thing.new(things(:one).attributes)
# Must set id manually
@example.id = things(:one).id
end
test 'thing can be created' do
ap @example
ap @example.valid?
ap @example.errors
assert @example.save
end
end
Вывод из удивительной печати выглядит следующим образом:
#<Thing:0x007fda8c1d99f8> {
:id => 980190962,
:name => "MyNameAgain",
:created_at => Sun, 22 Jan 2012 17:17:08 UTC +00:00,
:updated_at => Sun, 22 Jan 2012 17:17:08 UTC +00:00,
:description => "MyDescription"
}
false
#<ActiveModel::Errors:0x7fda8c064000
@base = #<Thing:0x007fda8c1d99f8> {
:id => 980190962,
:name => "MyNameAgain",
:created_at => Sun, 22 Jan 2012 17:17:08 UTC +00:00,
:updated_at => Sun, 22 Jan 2012 17:17:08 UTC +00:00,
:description => "MyDescription"
},
attr_reader :messages = {
:name => [
[0] "has already been taken"
]
}
>
F
Finished in 0.186603 seconds.
1) Failure:
test_thing_can_be_created(ThingTest) [/Users/sb1752/Dropbox/Coding/GeneralAssembly/class_RubyForDevs/4-rails-mvc/4.3-rails-dev/test/unit/thing_test.rb:16]:
Failed assertion, no message given.
1 tests, 1 assertions, 1 failures, 0 errors, 0 skips
Вот приспособление:
one:
name: MyNameAgain
description: MyDescription
two:
name: Hello
description: HelloDescription
Вот модель:
class Thing < ActiveRecord::Base
validates :name, :uniqueness => true, :presence => true
end
Дайте мне знать, еслиВам нужно больше информации!Спасибо!