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

Ala*_*rte 7 mocha.js reactjs

我正在使用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');

})
Run Code Online (Sandbox Code Playgroud)

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

第一次

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

第二次

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