More explicit assert with hamjest
An undone blog post - More explicit assert with hamjest
it('is true for a day that is a specialDay', () => {
const isSpecialDay = specialDays()[2].isSpecialDay;
assertThat(isSpecialDay, equalTo(true));
});
it('provides the special day\'s `name`', () => {
const specialDay = specialDays()[2].specialDay;
assertThat(specialDay, equalTo({ name: specialDayName }));
});
vs.
it('is true for a day that is a specialDay', () => {
const day = specialDays()[2];
assertThat(day, hasProperty('isSpecialDay', equalTo(true)));
});
it('provides the special day\'s `name`', () => {
const day = specialDays()[2];
assertThat(day, hasProperty('specialDay', equalTo({ name: specialDayName })));
});
there is even a simple transformation in it
assertThat(isSpecialDay, equalTo(true));
transforms into
assertThat(day.isSpecialDay, equalTo(true));
makes it obvious, that when the lookup day.isSpecialDay
fails we will get an error message like undefined does not equal to true
:( so let's tranform it into
assertThat(day, hasProperty('isSpecialDay', equalTo(true)));
and we will get: day has no property isSpecialDay
which should equal to true
You might say, that's two assertion in on test, but I am fine with that as long as the test reporter tells me all the things that are wrong. Otherwise I would have to figure out in which order to solve failing tests.