On 9/7/07, Geoffrey Wiseman <[EMAIL PROTECTED]> wrote:
> Sorry, lots of questions these days.
>
> Is there a normal approach for preconditions?  In JUnit, I might put a few
> assertions in the setUp() just to make sure that the test 'data' I've
> created meets expectations before going to test it.
>
> So, for instance, I've got an object that is audited using acts_as_audited
> and I'd like to test the XML that results from model.revisions.to_xml().
> I've created the object and modified it twice, so I expect there to be three
> revisions, as far as the test goes.  It's not really a 'spec', because it's
> not part of the contract that model objects have three revisions, it's just
> something I want to make sure is true before I run off and conduct some
> tests.
>
> I could raise an exception in the before block if the precondition isn't
> met, any other choices?
>
>   - Geoffrey
> --
> Geoffrey Wiseman
>
> _______________________________________________
> rspec-users mailing list
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
>

I'm not sure why you say this isn't a spec.  Specs are about behavior
of the system, not contracts.  In this case you have two examples
(imo).

describe MyModel, " when saved twice" do
  before(:each) do
    @model = MyModel.create :title => "foo"
    2.times { @model.save }
  end

  it "should have three revisions" do
    @model.should have(3).revisions
  end

  it "should render all revisions in a single XML doc" do
    Hash.from_xml(@model.to_xml).should ==
      { "model" => { "revision" => 1, "title" => "foo" },
        "model" => { "revision" => 2, "title" => "foo" },
        "model" => { "revision" => 3, "title" => "foo" } }
  end
end

Also I would just have one description (like above) that verifies that
it works as you expect.  In specs for other behaviors you can then
just assume that it works.

Pat
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to