R. Tyler Croy
2012-Mar-07 06:53 UTC
[Puppet Users] Mocking resources/classes in rspec-puppet
My module now depends on the puppetlabs/puppet-apt module for supporting
Debian/Ubuntu hosts, doing this however broke all my debian/ubuntu related
rspec-puppet tests.
Is there a reasonable way to mock out resources (like apt::source, etc) to just
test that my classes are doing what they should be doing?
Cheers
- R. Tyler Croy
--------------------------------------
Code: http://github.com/rtyler
Chatter: http://twitter.com/agentdero
rtyler@jabber.org
Jeff McCune
2012-Mar-07 16:22 UTC
Re: [Puppet Users] Mocking resources/classes in rspec-puppet
On Tue, Mar 6, 2012 at 10:53 PM, R. Tyler Croy <tyler@monkeypox.org> wrote:> My module now depends on the puppetlabs/puppet-apt module for supporting > Debian/Ubuntu hosts, doing this however broke all my debian/ubuntu related > rspec-puppet tests. > > Is there a reasonable way to mock out resources (like apt::source, etc) to > just > test that my classes are doing what they should be doing? >Not that I know of. rspec-puppet is testing the catalog itself and we don''t have a clean way to put mock resources in the catalog. What''s the breakage look like? I usually treat this sort of issue as a code smell. Ideally, one module will simply require Class resources from other modules rather than specific resources inside the class. In this situation all you need to do is declare a class with the same name in your spec tests to satisfy the dependency. Make sense? -Jeff -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
Tim Sharpe
2012-Mar-08 12:09 UTC
Re: [Puppet Users] Mocking resources/classes in rspec-puppet
As Jeff said, ideally you wouldn''t have any cross-module dependencies,
but everyone still does it.
There''s a couple of ways you can solve this issue at the moment. The
first (and my preferred way) is to setup a fixtures directory as described in
http://bombasticmonkey.com/2012/03/02/automatically-test-your-puppet-modules-with-travis-ci/
and then drop your apt module into spec/fixtures/modules/apt so that
it''s available to rspec-puppet.
The other option is to define a stub apt::source type like so
```
describe ''foo::bar'' do
let(:pre_condition) { "define apt::source($param1, $param2…) {}" }
it { should contain_apt__source(''baz'') }
end
```
Cheers,
Tim
On Thursday, 8 March 2012 at 3:22 AM, Jeff McCune wrote:
> On Tue, Mar 6, 2012 at 10:53 PM, R. Tyler Croy <tyler@monkeypox.org
(mailto:tyler@monkeypox.org)> wrote:
> > My module now depends on the puppetlabs/puppet-apt module for
supporting
> > Debian/Ubuntu hosts, doing this however broke all my debian/ubuntu
related
> > rspec-puppet tests.
> >
> > Is there a reasonable way to mock out resources (like apt::source,
etc) to just
> > test that my classes are doing what they should be doing?
>
> Not that I know of. rspec-puppet is testing the catalog itself and we
don''t have a clean way to put mock resources in the catalog.
>
> What''s the breakage look like? I usually treat this sort of issue
as a code smell. Ideally, one module will simply require Class resources from
other modules rather than specific resources inside the class. In this
situation all you need to do is declare a class with the same name in your spec
tests to satisfy the dependency.
>
> Make sense?
>
> -Jeff
>
> --
> You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com
(mailto:puppet-users@googlegroups.com).
> To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com
(mailto:puppet-users+unsubscribe@googlegroups.com).
> For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.
--
You received this message because you are subscribed to the Google Groups
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to
puppet-users+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/puppet-users?hl=en.