I am working my way through Agile web development with rails and I’m in
the testing chapter.
when I run the following test(or any other test)
I’m new and not sure where to start looking.
require ‘test_helper’
class ProductTest < ActiveSupport::TestCase
Replace this with your real tests.
test “the truth” do
assert true
end
end
I always get
ActiveRecord::StatementInvalid: SQLite3::SQLException: table users has
no column named image_url: INSERT INTO “users” (“created_at”,
“image_url”, “title”, “updated_at”, “id”, “description”) VALUES
(‘2010-12-06 16:04:02’, ‘MyString’, ‘MyString’, ‘2010-12-06 16:04:02’,
298486374, ‘MyText’)
John S. wrote in post #966558:
I am working my way through Agile web development with rails and I’m in
the testing chapter.
when I run the following test(or any other test)
I’m new and not sure where to start looking.
Read the error message! It tells you what you need to know.
Bonus tip: once you finish the testing tutorial, check out RSpec as a
replacement for Test::Unit and factories (Machinist or FactoryGirl) as a
replacement for fixtures. They’re much nicer tools than the ones
provided by the core team.
require ‘test_helper’
class ProductTest < ActiveSupport::TestCase
Replace this with your real tests.
test “the truth” do
assert true
end
end
I always get
ActiveRecord::StatementInvalid: SQLite3::SQLException: table users has
no column named image_url: INSERT INTO “users” (“created_at”,
“image_url”, “title”, “updated_at”, “id”, “description”) VALUES
(‘2010-12-06 16:04:02’, ‘MyString’, ‘MyString’, ‘2010-12-06 16:04:02’,
298486374, ‘MyText’)
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
I get that the error says that it’s trying to insert inappropriate data
into the users table. It looks like I just need to find out why it’s
picking the users table instead of the products table. I don’t know
where the insert is coming from.
Please quote when replying.
John S. wrote in post #966562:
I get that the error says that it’s trying to insert inappropriate data
into the users table. It looks like I just need to find out why it’s
picking the users table instead of the products table. I don’t know
where the insert is coming from.
Rails always gives a line number as part of its stack trace when errors
are generated. If looking there is not sufficient, then perhaps you
should use the debugger to step through your code and find out. Or
write more tests to figure out where the failure is.
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
On 6 December 2010 16:11, John S. [email protected] wrote:
assert true
end
end
I always get
ActiveRecord::StatementInvalid: SQLite3::SQLException: table users has
no column named image_url: INSERT INTO “users” (“created_at”,
“image_url”, “title”, “updated_at”, “id”, “description”) VALUES
(‘2010-12-06 16:04:02’, ‘MyString’, ‘MyString’, ‘2010-12-06 16:04:02’,
298486374, ‘MyText’)
If the error occurs before it actually starts running the tests and
happens whatever test you are running it may be an issue with loading
the fixtures into the test database. Have you got fixtures for the
users table (probably test/fixtures/users.yml)? Have you got
image_url specified in the fixture but not in the database?
Once you have worked through the tutorial then I would advise
forgetting about fixtures and using Factories instead.
Colin
On Mon, Dec 6, 2010 at 8:11 AM, John S. [email protected]
wrote:
I am working my way through Agile web development with rails and I’m in
the testing chapter.
when I run the following test(or any other test)
ActiveRecord::StatementInvalid: SQLite3::SQLException: table users has
no column named image_url:
So does your test database have such a column? Have you maybe
created a migration previously to add it, but not run migrations on your
test db?
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Colin L. wrote in post #966572:
[…]
Once you have worked through the tutorial then I would advise
forgetting about fixtures and using Factories instead.
Amen to that. Fixtures are evil, so much so that I no longer believe
that any test environment using fixtures can be considered a proper
testing environment.
Colin
Best,
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
Maybe Because I’m running rails 2.3.5 and the book uses something lower
I have something different fixtures. I swapped in the ones from the
book’s source and now it works. I hope I get an explanation as to
fixtures use as I go on in the book…thanks.
This is what was in my users.yml file:
one:
title: MyString
description: MyText
image_url: MyString
two:
title: MyString
description: MyText
image_url: MyString
I looked at the source code from the book and for users.yml, it is this:
<% SALT = “NaCl” unless defined?(SALT) %>
dave:
name: dave
salt: <%= SALT %>
hashed_password: <%= User.encrypted_password(‘secret’, SALT) %>
On 6 December 2010 17:05, John S. [email protected] wrote:
title: MyString
description: MyText
image_url: MyString
two:
title: MyString
description: MyText
image_url: MyString
I would have expected the fixtures to have been generated when you
generated the model. Are you sure you put the right fields in when
you generated the user model? Check back in your source control
system and see when you created it. The fixtures should match the
migration created at the same time. If you are not using a source
control system then install git and start using it. The few hours
learning curve (if you do not already use it) will be recovered many
times over.
Colin
Colin L. wrote in post #966572:
If the error occurs before it actually starts running the tests and
happens whatever test you are running it may be an issue with loading
the fixtures into the test database. Have you got fixtures for the
users table (probably test/fixtures/users.yml)? Have you got
image_url specified in the fixture but not in the database?
Once you have worked through the tutorial then I would advise
forgetting about fixtures and using Factories instead.
Colin
pretty sure this is the problem. For some reason the generated users.yml
and the generated products.yml file are the same. Just started this
chapter about an hour ago so I don’t exactly understand what these files
are for yet…thanks. I’ll just try editing the users.yml file to get it
to reflect the columns in the table.
I would have expected the fixtures to have been generated when you
generated the model. Are you sure you put the right fields in when
you generated the user model?
That makes sense except the user model looks correct. Unless I made a
mistake the first time I generated the model and then fixed it and then
forgot that I fixed it…?
I think to fix it, though, I would have regenerated the model which I
would have thought would regenerate the fixture. I’ll have to experiment
and see…