`and` chaining like this won't work -- it'll match `be_an(Integer)` against the entire actual object (the array), rather than matching against individual items.  If you want to support matching multiple matchers against all items, you can have it accept multiple matchers as I've shown below.