为什么我的React组件's ref在测试中等于undefined ?
Why is my React component's refs equal to undefined within a test?
在测试期间如何从组件内部访问refs
?我尝试过使用TestUtils.renderIntoDocument
(a la http://myshareoftech.com/2013/12/unit-testing-react-dot-js-with-jasmine-and-karma.html)和TestUtils.createRenderer().render()
,但在这两种情况下,我的组件的refs
似乎是未定义的(在PhantomJS和Chrome中运行Jasmine/Karma)。我是不是漏掉了什么?
我的假设是,这可能是由于0.14的变化与拆分ReactDOM,但我没有办法验证。
下面是我的代码:
import React from 'react'; // v0.14
import TestUtils from 'react/lib/ReactTestUtils';
import SeatList from '../../client/seat-list';
describe('SeatList', () => {
// using ReactShallowRenderer
var renderer = TestUtils.createRenderer();
function getRenderedResult(props = {}) {
renderer.render(<SeatList playerColor={props.playerColor || null}
white={props.white || undefined}
black={props.black || undefined}
sitOrStandAs={props.sitOrStandAs || null} />);
return renderer.getRenderOutput();
}
it('allows a user to sit in an open seat', () => {
let sitOrStandAs = jasmine.createSpy('sitOrStandAs');
let result = getRenderedResult({sitOrStandAs: sitOrStandAs});
console.log(result.refs); // result.refs is undefined :(
// using TestUtils.renderIntoDocument
let seatList = <SeatList playerColor={null} white={undefined} black={undefined} sitOrStandAs={sitOrStandAs} />;
TestUtils.renderIntoDocument(seatList);
let btn = seatList.refs.white; // throws Exception: seatList.refs is undefined :(
TestUtils.Simulate.click(btn);
expect(sitOrStandAs).toHaveBeenCalled();
});
});
任何建议都很好。谢谢!
我误以为renderIntoDocument
没有返回任何有用的东西。正确的解决方案是将seatList赋值给TestUtils.renderIntoDocument
的返回值:
let seatList = TestUtils.renderIntoDocument(seatList);
接下来,测试通过了,我现在感觉更快乐了。
相关文章:
- 模糊事件的Javascript测试
- 我的单元测试选项是什么
- 测试索引值是否等于某个数字的倍数
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 在localhost Dev Box上测试JSONP请求的最佳方式
- /undefined在我的404错误日志中多次出现
- jasmine测试抱怨undefined不是一个对象
- 使用 nodeunit 测试 JavaScript 库 - FileApi, substr undefined
- “window.angular is undefined.” 当使用量角器进行自动测试时
- jasmine测试失败,因为undefined不是一个函数(正在评估$browser$$checkUrlChange()
- 为什么我的React组件's ref在测试中等于undefined ?
- 错误使用' should '来测试nodeJS应用程序(undefined不是一个函数)
- 单元测试返回“TypeError: undefined不是一个函数”
- 使用自定义匹配器的Jasmine 2.0测试失败:undefined不是函数
- 当测试单个值时,Validate.js返回undefined
- 使用angular mocks/jasmine测试服务-TypeError:undefined不是对象
- 尚未使用Capybara、PhantomJS测试创建DOM对象(TypeError:undefined)
- 使用“var undefined”来测试未定义有什么问题吗?
- undefined在使用Mocha测试ReactJS时不是一个函数
- Ember单元测试渲染句柄返回null或undefined