On Fri, Jan 16, 2009 at 3:29 AM, Ken Wegener <kgwco...@yahoo.com> wrote: > > I'm new to rspec and looking for way to test a validation I added to a model. > > The test checks to see that if field1 has a value then field2 must be nil > and vice versa. > > ------------------------------- > When I did the rspec_scaffold it generated one test which worked > > before :each do > @valid_attributes = { > :field1 = "value for field1" > :field2 = "value for field2" > } > > MyTest.create!(@valid_attributes) > end > > it "should create a new instance given valid attributes" do > MyTest.create!(@valid_attributes) > end > > --------------------------------- > Before coding I modified the test file as follows > > it "should create a new instance given valid attributes" do > > @valid_attributes1 = { > :field1 = "value for field1" > :field2 = nil > } > > MyTest.create!(@valid_attributes1) > > @valid_attributes2 = { > :field1 = nil > :field2 = "value for field2" > } > > MyTest.create!(@valid_attributes2) > end > > it "should not create a new instance given incompatible attribute values" do > > @invalid_attributes1 = { > :field1 = "value for field1" > :field2 = "value for field2" > } > > MyTest.create!(@invalid_attributes) # I don't know how to test that the > save failed!! > end > > naturally the first two test failed and the last one as written didn't. > > after coding my validation the first two pass and naturally last one didn't. > > How do I test that the create failed. > -- > View this message in context: > http://www.nabble.com/rspec-model-testing---test-on-user-defined-validation--How-do-I-test-that-the-create-failed.-tp21465687p21465687.html > Sent from the rspec-users mailing list archive at Nabble.com. > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
Hi Ken, I would write the specs like: describe MyModel do it "should be valid when field1 is set and field2 is nil" do new_my_model(:field1 => "foo", :field2 => nil).should be_valid end it "should be valid when field2 is set and field1 is nil" do new_my_model(:field1 => nil, :field2 => "bar").should be_valid end it "should not be valid when field1 and field2 are set" do new_my_model(:field1 => "foo", :field2 => "bar").should_not be_valid end end new_my_model is coming from fixjour [1], but you could just use MyModel.new if you want. The key is that you get a new instance with the attributes set as you want and then ask it if it's valid. [1] http://github.com/nakajima/fixjour/tree/master _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users