About assert_difference problem. help!

I just want to do unit/test, test to creat person data (here are 3
cloumns) into the table
“people” of model person. and in model person, there is “def
Person.newly_created(args)” method.
In fixtures file, there is
test1:
id: 1
user_id: 1
firstname: test1
lastname: YY
test2:
id: 2
user_id: 2
firstname: test2
lastname: TT
test3:
id: 3
user_id: 3
firstname: test3
lastname: ZZ

I want to use assert_difference to test creat all data into database.

person_test.rb:
require File.dirname(FILE) + ‘/…/test_helper’
class PersonTest < Test::Unit::TestCase
fixtures :people

def test_should_create_person
assert_difference Person, :count do
assert=Person.newly_created.valid?
end
end

but there is an error:

  1. Error:
    test_should_create_person(PersonTest):
    ArgumentError: wrong number of arguments (0 for 1)
    test/unit/person_test.rb:17:in newly_created' test/unit/person_test.rb:17:intest_should_create_person’
    D:/kisscafe/config/…/lib/authenticated_test_helper.rb:42:in
    assert_difference' test/unit/person_test.rb:16:intest_should_create_person’

1 tests, 0 assertions, 0 failures, 1 errors

So I don’t know how to fix this problem. Please help!!

OnRails wrote:

def test_should_create_person
assert_difference Person, :count do
assert=Person.newly_created.valid?

assert is a method, and you are assigning something to it…?

And, yes, assert_latest can help you, because it can do anything
assert_different Model, :count can do, and more. So if you actually need
that, you could use assert_latest.


Phlip
http://www.oreilly.com/catalog/9780596510657/
“Test Driven Ajax (on Rails)”
assert_xpath, assert_javascript, & assert_ajax

---------- Forwarded message ----------
From: OnRails [email protected]
Date: Sep 2, 9:35 pm
Subject: about assert_difference problem. help!!
To: Ruby on Rails: Talk

I just want to do unit/test, test to creat person data (here are 3
cloumns) into the table
“people” of model person. and in model person, there is “def
Person.newly_created(args)” method.
In fixtures file, there is
test1:
id: 1
user_id: 1
firstname: test1
lastname: YY
test2:
id: 2
user_id: 2
firstname: test2
lastname: TT
test3:
id: 3
user_id: 3
firstname: test3
lastname: ZZ

I want to use assert_difference to test creat all data into database.

person_test.rb:
require File.dirname(FILE) + ‘/…/test_helper’
class PersonTest < Test::Unit::TestCase
fixtures :people

def test_should_create_person
assert_difference Person, :count do
assert.Person.newly_created.valid?
end
end

but there is an error:

  1. Error:
    test_should_create_person(PersonTest):
    ArgumentError: wrong number of arguments (0 for 1)
    test/unit/person_test.rb:17:in newly_created' test/unit/person_test.rb:17:in test_should_create_person’
    D:/kisscafe/config/…/lib/authenticated_test_helper.rb:42:in
    assert_difference' test/unit/person_test.rb:16:in test_should_create_person’

1 tests, 0 assertions, 0 failures, 1 errors

So I don’t know how to fix this problem. Please help!!

You’ve got some bugs in your syntax that you’ll need to take care of
before you start worrying assert_difference. Read the api for the
method that’s throwing the exception and do some homework.
assert_difference isn’t the issue here…

Also, neither assert=Person nor assert.Person do what you want to do.
I’d suggest reading up on unit tests in Ruby and Rails.

Rein