Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
The contract between getPrefix() and prefixWord() is violated but this is not detected by the specs
// utils/get_prefix.js
// Changed the return value type from string to object
export const getPrefix = () => ({ en: 'mega', fr: 'méga' });
// utils/prefix_word.js
export const prefixWord = (prefixGetter, wordToPrefix) => prefixGetter() + wordToPrefix;
// spec/utils/get_prefix.js
import getPrefix from '../../utils/get_prefix';
// Updated the test on getPrefix() to pass
describe('getPrefix()', => {
it('should return a prefix object', =>
expect(getPrefix).to.equal({ en: 'mega', fr: 'méga' }));
});
// spec/utils/prefix_word.js
import prefixWord from '../../utils/prefix_word';
// Forgot to update the stub on getPrefix()
const getPrefix = sinon.stub().returns('mega');
// The test on prefixWord() still passes but should fail
describe('prefixWord()', => {
it('should prefix the supplied word', =>
expect(prefixWord(getPrefix, 'Word')).to.equal('megaWord'));
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.