Confusing snapshot testing with unit testing methods
Thinking it tests CSS or events directly
Assuming it tests component logic
2. Which of the following is the correct way to write a snapshot test for a Vue component using @vue/test-utils?
easy
A. expect(mount(MyComponent).html()).toMatchSnapshot()
B. expect(shallowMount(MyComponent).text()).toMatchSnapshot()
C. expect(mount(MyComponent).vm).toMatchSnapshot()
D. expect(renderToString(MyComponent)).toBeSnapshot()
Solution
Step 1: Identify correct mounting and snapshot method
Using mount from @vue/test-utils and calling html() returns the rendered HTML string.
Step 2: Match snapshot with Jest matcher
toMatchSnapshot() is the correct Jest matcher to compare the HTML output to the saved snapshot.
Final Answer:
expect(mount(MyComponent).html()).toMatchSnapshot() -> Option A
Quick Check:
mount + html() + toMatchSnapshot() = correct syntax [OK]
Hint: Use mount().html() with toMatchSnapshot() for Vue snapshots [OK]
Common Mistakes:
Using shallowMount instead of mount when full HTML is needed
Trying to snapshot the component instance (vm) instead of HTML
Using incorrect matcher like toBeSnapshot()
3. Given this test code snippet, what will happen when the component's HTML changes unexpectedly?
import { mount } from '@vue/test-utils'
import MyComponent from './MyComponent.vue'
test('renders correctly', () => {
const wrapper = mount(MyComponent)
expect(wrapper.html()).toMatchSnapshot()
})
medium
A. The test will fail indicating the snapshot does not match the new HTML
B. The test will pass regardless of HTML changes
C. The test will throw a syntax error
D. The test will update the snapshot automatically
Solution
Step 1: Understand snapshot comparison behavior
When the component's HTML changes, Jest compares the new output to the saved snapshot and detects differences.
Step 2: Result of mismatch
If the HTML differs unexpectedly, the test fails to alert the developer about the change.
Final Answer:
The test will fail indicating the snapshot does not match the new HTML -> Option A
Quick Check:
Snapshot mismatch causes test failure [OK]
Hint: Snapshot test fails if UI output changes unexpectedly [OK]
Common Mistakes:
Assuming tests auto-update snapshots without command
Thinking test passes even if HTML changes
Confusing syntax errors with snapshot failures
4. You wrote this snapshot test but it always fails with an error:
expect(wrapper.html().toMatchSnapshot())
What is the problem and how to fix it?
medium
A. toMatchSnapshot() is not a valid Jest matcher; fix by using toEqualSnapshot()
B. wrapper.html() returns undefined; fix by using wrapper.text() instead
C. Missing import of toMatchSnapshot from Jest; fix by importing it explicitly
D. toMatchSnapshot() should be called on expect(), not on the string; fix: expect(wrapper.html()).toMatchSnapshot()
Solution
Step 1: Identify incorrect method chaining
The code calls toMatchSnapshot() on the string result of wrapper.html(), which is incorrect.
Step 2: Correct usage of Jest matcher
The matcher toMatchSnapshot() must be called on the expect() wrapper, not on the string itself.
Final Answer:
toMatchSnapshot() should be called on expect(), not on the string; fix: expect(wrapper.html()).toMatchSnapshot() -> Option D
Quick Check:
Call matcher on expect() result [OK]
Hint: Call toMatchSnapshot() on expect(), not on string [OK]
Common Mistakes:
Calling matcher on string instead of expect()
Using wrong matcher name
Assuming wrapper.html() returns undefined
5. You have a Vue component that conditionally renders a button based on a prop. You want to snapshot test both states (button shown and hidden). How should you write your tests to handle this correctly?
hard
A. Write a test that updates the snapshot manually after each prop change
B. Write one test mounting the component without props and snapshot it once
C. Write two separate tests, each mounting the component with different prop values, and snapshot each output
D. Write one test mounting the component with both prop values at once and snapshot the combined output
Solution
Step 1: Understand conditional rendering impact
The component's output changes based on the prop, so each state has a different HTML structure.
Step 2: Write separate snapshot tests per state
Mount the component twice with different prop values and snapshot each output separately to catch changes in both states.
Final Answer:
Write two separate tests, each mounting the component with different prop values, and snapshot each output -> Option C
Quick Check:
Separate snapshots for different states [OK]
Hint: Test each UI state separately with its own snapshot [OK]
Common Mistakes:
Trying to snapshot multiple states in one test
Not passing props to trigger conditional rendering
Updating snapshots without verifying changes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.