当前位置: 首页 > 面试题库 >

如何通过Jest测试React PropTypes?

井旺
2023-03-14
问题内容

我正在为我的React代码编写Jest测试,并希望使用/测试PropType检查。我对Javascript领域很陌生。我正在使用npm进行安装react-0.11.2并有一个简单的方法:

var React = require('react/addons');

在我的测试中。我的测试看起来很像玩笑/反应教程示例,其代码如下:

var eventCell = TestUtils.renderIntoDocument(
  <EventCell
    slot={slot}
    weekId={weekId}
    day={day}
    eventTypes={eventTypes}
    />
);

var time = TestUtils.findRenderedDOMComponentWithClass(eventCell, 'time');
expect(time.getDOMNode().textContent).toEqual('19:00 ');

但是,似乎EventCell并未触发组件中的PropType检查。我知道检查仅在开发模式下运行,但是我还认为react通过npm获得了开发版本。当我使用watchify构建组件时,检查会在浏览器中触发。

我想念什么?


问题答案:

潜在的问题是如何测试console.log

简短的答案是您应console.{method}在测试期间更换。常用的方法是使用间谍。在这种情况下,您可能想使用存根阻止输出。

这是使用Sinon.js的示例实现(Sinon.js提供了独立的间谍,存根和模拟):

import {
    expect
} from 'chai';
import DateName from './../../src/app/components/DateName';
import createComponent from './create-component';
import sinon from 'sinon';

describe('DateName', () => {
    it('throws an error if date input does not represent 12:00:00 AM UTC', () => {
        let stub;

        stub = sinon.stub(console, 'error');

        createComponent(DateName, {date: 1470009600000});

        expect(stub.calledOnce).to.equal(true);
        expect(stub.calledWithExactly('Warning: Failed propType: Date unix timestamp must represent 00:00:00 (HH:mm:ss) time.')).to.equal(true);

        console.error.restore();
    });
});

在此示例中DataName,使用不代表精确日期(12:00:00 AM)的时间戳值初始化时,组件将引发错误。

我正在使用该console.error方法(这是Facebook
warning模块内部使用的生成错误的方法)。我确保已调用存根一次,并且仅使用一个代表错误的参数。



 类似资料:
  • 使用玩笑和酶,我如何测试这一点。道具。功能测试运行了吗? 开玩笑的是,我试着创建mockProps,并在安装组件时传递它们。 控制台。登录componentDidMount函数会将functionToTest显示为未定义。显然,在坐骑过程中通过道具是不起作用的。 问题1:如何传入将在componentDidMount函数中显示的模拟道具? 问题2:一旦该函数可用,我如何获得该函数的访问权限,以便在

  • null null 对上述重试功能执行以下测试。 总是传递一个承诺进行解析,重试函数在第一次执行时解析/li> 我以为写这些开玩笑的时候会是这样的。 因此,它失败,出现以下错误。 我认为,这将是可以管理的设置在笑话关于这个错误。但是,从根本上说,我不知道如何在Jest中测试promise递归处理。

  • 我正在通过运行Jest测试。默认情况下,Jest并行运行测试。有没有办法让测试按顺序运行? 我有一些测试调用依赖于更改当前工作目录的第三方代码。

  • 我使用Jest框架,并有一个测试套件。我想关闭/跳过我的一个测试。 谷歌文档并没有给我答案。 你知道要查的答案或信息来源吗?

  • 我有一个测试类的问题。 在我的ParkingSpotService类中,有一个UUID找到的方法,我想为此编写一个测试: 我做了什么?我创建了一个TestClass ParkingSpotServiceTest: } 在我创建了一个测试之后 观察: 当我检查optionalParkingSpot时,所有数据都在那里。

  • 我总是在Jest测试中得到“localstorage is not defined”,这很有意义,但我有什么选择呢?撞上砖墙。