测试使用带有--watch选项的mocha进行反应,仅在第一次显示警告

时间:2015-05-14 01:40:58

标签: reactjs mocha

我正在使用mocha测试React组件。我试图捕捉一些警告(通过console),主要与“失败的propType”和React可以提供的其他警告有关。但是我不得不重复使用其他测试方法,因为测试只会在第一次显示警告。

这是我的测试代码:

var jsdom = require('mocha-jsdom');
var { expect, assert } = require('chai');
var sinon  = require('sinon');


describe('Deck', function() {
    jsdom();

    var React = require('react/addons');
    var TestUtils = React.addons.TestUtils;
    var Deck, Card, OtherMock; 
    var renderer, result;

    beforeEach(function() {
        Deck = require('../App/Components/Deck.js');
        Card = require('../App/Components/Card.js')
        OtherMock = React.createClass({ render: function() { return null } });

        renderer = React.addons.TestUtils.createRenderer();

        renderer.render(
            <Deck>
                <OtherMock />
                <OtherMock />
                <OtherMock />
                <Card />
                <Card />
                <Card />
            </Deck>
        );

        result = renderer.getRenderOutput();

    });

    afterEach(function() {
    });

    it('should create a new instance of Deck', function () {
        expect(result).to.exist;
    });

    it('should have a default style', function () {
        expect(result.props.style).to.exist;
    });

    it('should only allow children of type Card', function () {
        expect(result.props.children.length).to.exist;
        expect(result.props.children.length).to.equal(3);
    });


    it('should allow one card', function() {
        var renderer = React.addons.TestUtils.createRenderer();

        renderer.render(
            <Deck>
                <Card />
            </Deck>
        );

        var result = renderer.getRenderOutput()
        expect(result).to.exist;
        expect(React.Children.count(result.props.children)).to.equal(1);

    });

    it('should render empty when passed incorrect children', function() {
        var renderer = React.addons.TestUtils.createRenderer();

        renderer.render(
            <Deck>
                <OtherMock />
            </Deck>
        );

        var result = renderer.getRenderOutput()
        expect(result).to.exist;
        expect(React.Children.count(result.props.children)).to.equal(0);

    });

    it('should render when empty', function() {
        var renderer = React.addons.TestUtils.createRenderer();

        renderer.render(
            <Deck />
        );

        var result = renderer.getRenderOutput()
        expect(result).to.exist;
    });

    it('should add keys to children', function() {
        var index = React.Children.count(result.props.children);
        React.Children.forEach(result.props.children, function(child) {
            expect(child.props.cardIndex).to.exist;
            expect(child.props.cardIndex).to.equal(--index);
        })
    });

    it('should have just the first child with handlers');

    it('should have only the first and second child with images');

    it('should preload up to the determined number of images');

})

我看到的是第一次运行(键入npm run test只调用mocha --watch --compilers js:babel/register --recursive)它会显示警告,我可以用sinon和所有内容模拟console.warn

first time

然而,第二次,我没有得到任何警告,我对console.warn间谍的测试将失败。

second time

知道这里发生了什么吗?我试过在摩卡的Gitter中,在IRC的React频道中,通过文档和mocha --help,但无济于事。

0 个答案:

没有答案