为什么 Jest 的 expect 中的字符串比较没有失败?

Why is this string comparison in Jest's expect not failing?

我正在 ReactJSJest 迈出第一步。

下面的期望通过了,尽管它不应该通过。查看 属性 是如何打印的:

console.log(searchBox.props.url_variation); 
// prints: curation/get_site_variations/

那么为什么 expect 没有失败?

jest.dontMock('../databank_web/static/js/curation_tools/SearchBox.js');

describe('SearchBox', function () {
    it('loads results after click', function () {
        var React = require('react/addons');
        var TestUtils = React.addons.TestUtils;
        var SearchBox = require('../databank_web/static/js/curation_tools/SearchBox.js');

        // Render the form?
        var searchBox = TestUtils.renderIntoDocument(<SearchBox
            url_variation="curation/get_site_variations/"
            url_golden="curation/golden_record/"/>);


        console.log(searchBox.props.url_variation); // prints: curation/get_site_variations/

        expect(searchBox.props.url_variation === "fail");
// Why is this passing? fail is not equal to 'curation/get_site_variations/'

    });
});

将您的期望更改为以下内容:

expect(searchBox.props.url_variation).toEqual("fail")

这会导致测试失败。它通过的原因是 expect(false) 不会导致测试失败。我相信这种行为实际上是从 Jasmine 继承而来的,在 Jasmine 中,期望本身就是价值观。链式匹配器是导致测试通过或失败的原因。