Revisiting this: It looks like you made your backports version call `Kernel.srand` (which is good for compatibility),  so it seems like `::Random` and your backports version have the same behavior now, right?  As such it would be nice to not run these specs against only one version.  Is the problem that `::Random` causes the kernel `rand` to be seeded but does so in C and w/o a ruby `Kernel.srand` message send and thus your mock expectation fails?

If so, and alternate implementation of these tests (which I might like better anyway) could be this:

``` ruby
describe '.srand' do
  it "seeds Kernel's `rand` with the specified seed" do
    srand(123)
    expected_value = rand(10000)

    Random.srand(123)
    expect(rand(10000)).to eq(expected_value)
  end

  it 'uses a seed of 0 if none is given' do
    srand(0)
    expected_value = rand(10000)

    Random.srand
    expect(rand(10000)).to eq(expected_value)
  end
end
```

I think I like this better because it demonstrates the underlying behavior we're looking for rather than simply the messages that are sent to achieve that behavior.  And this should work on both versions of Random, right?