56 lines
1.7 KiB
Plaintext
Raw Normal View History

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.
In such cases, what is intended to be a test doesn't actually verify anything
== Noncompliant Code Example
----
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
});
});
----
== Compliant Solution
----
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);
});
});
----
ifdef::env-github,rspecator-view[]
== Comments And Links
(visible only on this page)
include::../comments-and-links.adoc[]
endif::env-github,rspecator-view[]