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.