我正在为我的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框架,并有一个测试套件。我想关闭/跳过我的一个测试。 谷歌文档并没有给我答案。 你知道要查的答案或信息来源吗?
我总是在Jest测试中得到“localstorage is not defined”,这很有意义,但我有什么选择呢?撞上砖墙。
我有一个测试类的问题。 在我的ParkingSpotService类中,有一个UUID找到的方法,我想为此编写一个测试: 我做了什么?我创建了一个TestClass ParkingSpotServiceTest: } 在我创建了一个测试之后 观察: 当我检查optionalParkingSpot时,所有数据都在那里。