Since you have a set of records of known, finite cardinality _and_ a known order, there is a much simpler (and therefore more useful) way to express this expectation: just write out the expected set.  Doing so also eliminates the need to check the count, because that'll be verified as part of the expectation.

```ruby
m = NcsNavigator::bleh::ThreePointZero

results.map(&:class).should == [m::Person, m::LinkPersonProvider, m::Person, ...]
```

You can assign constants to local variables to shorten names.

However, I think this is a clearer set of examples:

```ruby
it "creates three Person records" do
  results.select { |r| Person === r }.length.should == 3
end

it "creates three LinkProviderRecords" do
  results.select { |r| LinkPersonProvider === r }.length.should == 3
end
```

The spec will only pass if both examples are true, and you can ensure that both examples' postconditions check the same process via e.g. `let` or otherwise setting up a common example setup.