Last active
November 15, 2017 15:50
-
-
Save hartmantis/5505152 to your computer and use it in GitHub Desktop.
ChefSpec stubs for testing a recipe in isolation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'chefspec' | |
module SpecHelper | |
def global_stubs | |
# Don't worry about external cookbook dependencies | |
Chef::Cookbook::Metadata.any_instance.stub(:depends) | |
# Test each recipe in isolation, regardless of includes | |
@included_recipes = [] | |
Chef::RunContext.any_instance.stub(:loaded_recipe?).and_return(false) | |
Chef::Recipe.any_instance.stub(:include_recipe) do |i| | |
Chef::RunContext.any_instance.stub(:loaded_recipe?).with(i).and_return(true) | |
@included_recipes << i | |
end | |
Chef::RunContext.any_instance.stub(:loaded_recipes).and_return(@included_recipes) | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I dont know if I was doing something wrong, or something with the api has changed (this is from 2013), but this didnt work for me. Though it did get me on the road to this solution if you want to ensure
include_recipe
is called with the right recipe(s), but don't want to load the resources in the included recipe(s):A complete example of this: atheiman/test-cookbook#4