Back to all reviewers

Use specific assertion methods

fastify/fastify
Based on 15 comments
JavaScript

Choose the appropriate assertion method based on the data type being tested. This improves test readability and provides clearer error messages when tests fail.

Testing JavaScript

Reviewer Prompt

Choose the appropriate assertion method based on the data type being tested. This improves test readability and provides clearer error messages when tests fail.

For scalar values (numbers, strings, booleans), use strictEqual instead of equal or deepStrictEqual:

// ❌ Not ideal - less specific assertion
t.assert.equal(response.statusCode, 200)
t.assert.deepStrictEqual(fastify.hasRoute({ }), false)

// ✅ Better - correct assertion for scalar types
t.assert.strictEqual(response.statusCode, 200)
t.assert.strictEqual(fastify.hasRoute({ }), false)

For objects and arrays, use deepStrictEqual rather than deepEqual or same:

// ❌ Not ideal - can miss type differences
t.assert.deepEqual(body.toString(), JSON.stringify({ hello: 'world' }))

// ✅ Better - ensures exact object equality
t.assert.deepStrictEqual(body.toString(), JSON.stringify({ hello: 'world' }))

When possible, combine assertions directly with awaited methods to reduce code verbosity:

// ❌ Not ideal - unnecessary intermediate variable
const body = await response.text()
t.assert.deepStrictEqual(body, 'this was not found')

// ✅ Better - direct assertion
t.assert.deepStrictEqual(await response.text(), 'this was not found')

Ensure proper resource cleanup using t.after() hooks rather than closing resources at the end of tests:

// ❌ Not ideal - may not run if test fails
fastify.close()

// ✅ Better - ensures cleanup even if test fails
t.after(() => fastify.close())
15
Comments Analyzed
JavaScript
Primary Language
Testing
Category

Source Discussions