I'm thinking about this a bit more. I think there's too much magic going on here. I don't think it makes sense for the `stub_environment` method to actually stub the environment on the node. Just like the `stub_node` method, this should return a stubbed `Chef::Environment`. It is then the responsibility of the user to set the environment on their node(s). Here's what I'm thinking:

```ruby
describe 'cookbook::recipe' do
  let(:chef_run) do
    ChefSpec::Runner.new do |node|
      node.stub(:environment).and_return(production)
    end.converge(described_recipe)
  end

  let(:production) { stub_environment('production') }

  it 'does something important' do
    expect(chef_run).to do_something
  end
end
```

Because this would allow the user to do more, especially with multiple nodes on the Chef Zero instance.