Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Mock Providers in Terraform Tests
📖 Scenario: You are working on a Terraform module that manages cloud resources. To ensure your module works correctly, you want to write tests that simulate cloud provider behavior without actually creating real resources.This helps you catch mistakes early and saves cloud costs.
🎯 Goal: Create a Terraform test configuration that uses a mock provider to simulate cloud resources.You will define a mock provider, configure it, and write a simple resource using the mock provider in your test.
📋 What You'll Learn
Create a mock provider block named mock
Configure the mock provider with a version constraint ~> 1.0
Define a resource mock_resource using the mock provider
Add a test configuration block that uses the mock provider
💡 Why This Matters
🌍 Real World
Mock providers let you test Terraform modules safely without creating real cloud resources, saving cost and time.
💼 Career
Cloud engineers and DevOps professionals use mock providers to write reliable infrastructure tests and ensure code quality.
Progress0 / 4 steps
1
Create a mock provider block
Create a Terraform provider block named mock with the source set to hashicorp/mock and version set to ~> 1.0.
Terraform
Hint
Use the terraform block to specify required providers.
Then add a provider "mock" {} block.
2
Add a mock resource using the mock provider
Add a resource block named mock_resource of type mock_resource using the mock provider. Set the resource name to example and add an attribute name with value test-resource.
Terraform
Hint
Use resource "mock_resource" "example" {} and inside set provider = mock and name = "test-resource".
3
Add a test configuration block
Add a terraform block with a required_version set to >= 1.0 and a required_providers block specifying the mock provider with source hashicorp/mock and version ~> 1.0. This simulates the test environment.
Terraform
Hint
Set required_version inside the terraform block to >= 1.0.
4
Complete the mock provider test setup
Add a provider block for mock with no arguments to complete the test setup.
Terraform
Hint
Just add provider "mock" {} block.
Practice
(1/5)
1. What is the main purpose of using a mock provider in Terraform tests?
easy
A. To deploy resources faster in production
B. To speed up Terraform apply by skipping resource creation
C. To simulate cloud resources without creating real ones
D. To automatically fix errors in Terraform code
Solution
Step 1: Understand what mock providers do
Mock providers simulate cloud resources so tests can run without real resource creation.
Step 2: Compare options
Only To simulate cloud resources without creating real ones correctly describes this purpose. Others describe unrelated or incorrect uses.
Final Answer:
To simulate cloud resources without creating real ones -> Option C
Quick Check:
Mock provider purpose = simulate resources [OK]
Hint: Mock providers simulate resources without real creation [OK]
Common Mistakes:
Thinking mock providers speed up production deploys
Believing mock providers fix code automatically
Confusing mock providers with real cloud providers
2. Which of the following is the correct way to declare a mock provider in Terraform test configuration?
easy
A. provider "mock" {}
B. mock_provider {}
C. provider mock {}
D. mock "provider" {}
Solution
Step 1: Recall Terraform provider syntax
Providers are declared with provider "name" {} syntax.
Step 2: Identify correct syntax for mock provider
provider "mock" {} matches this syntax exactly. Others are invalid Terraform syntax.
Final Answer:
provider "mock" {} -> Option A
Quick Check:
Provider declaration = provider "name" {} [OK]
Hint: Provider blocks use provider "name" {} syntax [OK]
Common Mistakes:
Using underscores instead of quotes
Omitting the provider keyword
Swapping provider and name order
3. Given this Terraform test snippet using a mock provider:
resource "mock_resource" "test" {
name = "example"
}
output "resource_name" {
value = mock_resource.test.name
}
What will the output value be when running the test?
medium
A. null
B. "mock_resource.test.name"
C. Error: resource not found
D. "example"
Solution
Step 1: Understand mock resource behavior
The mock provider returns the values set in the resource block during tests.
Step 2: Check the output value
The output references mock_resource.test.name which is set to "example".
Final Answer:
"example" -> Option D
Quick Check:
Output value = resource attribute value [OK]
Hint: Mock resources return set attribute values in tests [OK]
Common Mistakes:
Expecting null because no real resource exists
Assuming an error occurs without real cloud
Confusing output with resource address string
4. You wrote this Terraform test using a mock provider but get an error:
provider "mock" {
version = "1.0"
}
resource "mock_resource" "test" {
name = "test"
}
The error says: Unsupported argument: version. What is the likely cause?
medium
A. The provider block is missing required credentials
B. Mock providers do not support the 'version' argument in provider block
C. The resource name 'mock_resource' is invalid
D. Terraform version is incompatible with mock providers
Solution
Step 1: Analyze the error message
The error says 'Unsupported argument: version' inside the provider block.
Step 2: Understand mock provider limitations
Mock providers usually do not accept 'version' argument in provider blocks; it's for real providers.
Final Answer:
Mock providers do not support the 'version' argument in provider block -> Option B
Quick Check:
Provider block args must match provider capabilities [OK]
Hint: Mock providers have minimal config, no version arg [OK]
Common Mistakes:
Adding version argument to mock provider block
Assuming resource name causes this error
Thinking credentials are required for mock providers
5. You want to test a Terraform module that creates multiple resources using a mock provider. Which approach best ensures your tests catch errors without creating real resources?
hard
A. Configure a mock provider and write tests that check resource attributes and dependencies
B. Run Terraform apply with real provider but in a separate test account
C. Use mock provider only for outputs, but real provider for resources
D. Skip provider configuration and test only variable inputs
Solution
Step 1: Understand testing goals with mock providers
Mock providers simulate resource creation so tests can verify attributes and dependencies safely.
Step 2: Evaluate options for safe and effective testing
Configure a mock provider and write tests that check resource attributes and dependencies uses mock provider fully and tests resource details, which is best practice.
Step 3: Eliminate unsafe or incomplete options
Options B and C involve real resources risking cost and side effects; D skips important tests.
Final Answer:
Configure a mock provider and write tests that check resource attributes and dependencies -> Option A