默认情况下,GWT Place URL包含Place的简单类名(如"HelloPlace"),后跟冒号(:)和PlaceTokenizer返回的标记.
我的问题是如何将":"改为"/"?
来自GWT,Backbone似乎错过了一个关于如何处理视图生命周期的内置解决方案.在GWT中,每个活动(或多或少等同于Backbone中的View)由ActivityManager管理,ActivityManager在活动上调用onStart/onStop,传递eventBus和可以呈现Activity的元素.停止时, ActivityManager将取消绑定活动绑定到eventbus的所有事件,并从DOM中删除视图.
在Backbone中,很容易将事件绑定到模型和集合,但您必须手动删除它们,并且没有通用的api方法可以执行此操作.
所以我正在寻找关于如何管理视图的最佳实践模式,以确保没有被杀死或被禁用的视图正在监听事件.
我正在使用jest来测试我的reactJS组件.在我的reactJS组件中,我需要使用jquery UI,所以我在组件中添加了这个:
var jQuery = require('jquery');
require('jquery-ui/ui/core');
require('jquery-ui/ui/draggable');
require('jquery-ui/ui/resizable');
Run Code Online (Sandbox Code Playgroud)
它工作得很好.但是,现在,我需要使用jest进行测试,但是当我将组件加载到testutils中时,我立即遇到了这个问题,
Test suite failed to run
ReferenceError: jQuery is not defined
Run Code Online (Sandbox Code Playgroud)
如果你在你的应用程序中使用jQuery,有没有人遇到过这个问题?
谢谢
我想在我的开玩笑测试代码中摆脱全局变量.具体来说describe
,it
和expect
describe('Welcome (Snapshot)', () => {
it('Welcome renders hello world', () => {
...
});
});
Run Code Online (Sandbox Code Playgroud)
所以我尝试添加
import {describe,it} from 'jest';
Run Code Online (Sandbox Code Playgroud)
和
import jest from 'jest';
jest.describe( ...
jest.it( ...
Run Code Online (Sandbox Code Playgroud)
和其他变化..
但没有运气.
我应该如何使它工作?
我想对我的项目有100%的报道.
为了做到这一点,我需要测试我的index.js文件,这是非常基本的:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(<App/>, document.getElementById('root'));
Run Code Online (Sandbox Code Playgroud)
我找不到如何测试这个.创建函数时,例如:
index.js
const index = (div) => {
ReactDOM.render(<App />, div || document.getElementById('root'));
};
Run Code Online (Sandbox Code Playgroud)
然后测试它:
index.test.js
it('renders without crashing', () => {
const div = document.createElement('div');
index(div);
});
Run Code Online (Sandbox Code Playgroud)
导入时出错index
:Invariant Violation:_registerComponent(...):目标容器不是DOM元素.
PS:
请注意,我已完成以下测试:
App.test.jsx
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App/>, div);
});
Run Code Online (Sandbox Code Playgroud) 看来babel变换在我的testcase代码中有效,但是es6语法node_modules
却没有.
npm 4.5
MacOS Sierra
{
"preset": "react-native",
"globals": {
"__DEV__": true
},
"transform": {
"^.+\\.js$": "babel-jest"
}
}
Run Code Online (Sandbox Code Playgroud)
{
"env": {
"test": {
"presets": ["react-native"],
"plugins": [["import", { "libraryName": "antd-mobile" }]]
},
"development": {
"presets": ["react-native"],
"plugins": [["import", { "libraryName": "antd-mobile" }]]
},
"production": {
}
}
}
Run Code Online (Sandbox Code Playgroud)
import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import Index from '../index.ios.js';
it('renders correctly', () => {
const tree = renderer.create(
<Index …
Run Code Online (Sandbox Code Playgroud) 我正在尝试让Jest对我的React应用程序进行快照测试.我的package.json中的版本:
"react": "15.6.1",
"react-dom": "15.6.1",
"react-test-renderer": "15.6.1",
Run Code Online (Sandbox Code Playgroud)
我无法通过这个错误:
? Test suite failed to run
Cannot find module 'react/lib/ReactComponentTreeHook' from 'ReactDebugTool.js'
at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:179:17)
at Object.<anonymous> (node_modules/react-test-renderer/lib/ReactDebugTool.js:16:30)
Run Code Online (Sandbox Code Playgroud)
我已经尝试删除并重新安装我的node_modules目录,我已经验证我的组件的路径是正确的但仍然得到同样的错误.
我的测试看起来像这样:
import React from 'react';
import renderer from 'react-test-renderer';
import { Section } from '../../app/views/containers/section';
it('renders correctly', () => {
const section = renderer.create(
<Section key="1" section="finance"/>
).toJSON();
expect(section).toMatchSnapshot();
});
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我试图用来enzyme
断言DOM节点.我的Component
样子
import React, {Component} from 'react';
import TransactionListRow from './TransactionListRow';
import {Table, TableBody, TableHeader, TableHeaderColumn, TableRow} from 'material-ui/Table';
export default class TransactionList extends Component {
render() {
const { transactions } = this.props;
return (
<Table>
<TableHeader displaySelectAll={false}>
<TableRow>
<TableHeaderColumn>Name</TableHeaderColumn>
<TableHeaderColumn>Amount</TableHeaderColumn>
<TableHeaderColumn>Transaction</TableHeaderColumn>
<TableHeaderColumn>Category</TableHeaderColumn>
</TableRow>
</TableHeader>
<TableBody>
{transactions.map(transaction =>
<TransactionListRow key={transaction.id} transaction={transaction}/>
)}
</TableBody>
</Table>
);
}
};
Run Code Online (Sandbox Code Playgroud)
我的test
样子
import expect from 'expect';
import React from 'react';
import {mount} from 'enzyme';
import TransactionList from '../TransactionList'; …
Run Code Online (Sandbox Code Playgroud) 我想设置两个不同的环境,并能够在监视模式下运行.
|-- /server
| |-- index.js <- Node
|-- /client
| |-- index.js <- jsdom
|-- package.json
Run Code Online (Sandbox Code Playgroud)
实际上我为每个环境运行两次jest,为每个环境提供不同的配置文件:
$ yarn test -- --config=server.config.json
$ yarn test -- --config=client.config.json
Run Code Online (Sandbox Code Playgroud)
但这并不能让我同时兼顾两者.
jestjs ×7
reactjs ×4
javascript ×3
babel-jest ×1
backbone.js ×1
enzyme ×1
es6-modules ×1
event-driven ×1
gwt ×1
node.js ×1
raphael ×1
react-jsx ×1
react-native ×1
svg ×1
testing ×1
tokenize ×1