2023-05-03 11:06:20 +02:00
== Why is this an issue?
2020-12-21 15:38:52 +01:00
It is very easy to write incomplete assertions when using some test frameworks. This rule enforces complete Chai assertions in the following cases:
2021-01-27 13:42:22 +01:00
* when ``++assert.fail++``, ``++expect.fail++`` or ``++should.fail++`` are present but not called.
* when an ``++expect(...)++`` or ``++should++`` assertion is not followed by an assertion method, such as ``++equal++``.
* when an ``++expect++`` or ``++should++`` assertion ends with a https://www.chaijs.com/api/bdd/#method_language-chains[chainable getters], such as ``++.that++``, or a modifier, such as ``++.deep++``.
* when an ``++expect++`` or ``++should++`` assertion function, such as ``++.throw++``, is not called.
2020-12-21 15:38:52 +01:00
In such cases, what is intended to be a test doesn't actually verify anything
2023-05-03 11:06:20 +02:00
=== Noncompliant code example
2020-12-21 15:38:52 +01:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2020-12-21 15:38:52 +01:00
----
const assert = require('chai').assert;
const expect = require('chai').expect;
describe("incomplete assertions", function() {
const value = 42;
it("uses chai 'assert'", function() {
assert.fail; // Noncompliant
});
it("uses chai 'expect'", function() {
expect(1 == 1); // Noncompliant
expect(value.toString).to.throw; // Noncompliant
});
});
----
2023-05-03 11:06:20 +02:00
=== Compliant solution
2020-12-21 15:38:52 +01:00
2022-02-04 17:28:24 +01:00
[source,javascript]
2020-12-21 15:38:52 +01:00
----
const assert = require('chai').assert;
const expect = require('chai').expect;
describe("incomplete assertions", function() {
const value = 42;
it("uses chai 'assert'", function() {
assert.fail();
});
it("uses chai 'expect'", function() {
expect(1).to.equal(1);
expect(value.toString).throw(TypeError);
});
});
----
2021-06-02 20:44:38 +02:00
2021-06-03 09:05:38 +02:00
ifdef::env-github,rspecator-view[]
2021-09-20 15:38:42 +02:00
'''
== Implementation Specification
(visible only on this page)
include::../message.adoc[]
include::highlighting.adoc[]
2021-06-08 15:52:13 +02:00
'''
2021-06-02 20:44:38 +02:00
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
2021-06-03 09:05:38 +02:00
endif::env-github,rspecator-view[]