模拟按钮单击似乎是一个非常简单/标准的操作.然而,我无法在Jest.js测试中使用它.
这是我试过的(也使用jquery),但它似乎没有触发任何东西:
import { mount } from 'enzyme';
page = <MyCoolPage />;
pageMounted = mount(page);
const button = pageMounted.find('#some_button');
expect(button.length).toBe(1); // it finds it alright
button.simulate('click'); // nothing happens
Run Code Online (Sandbox Code Playgroud) 我正在使用Enzyme for React 编写测试.
我的测试非常简单:
import OffCanvasMenu from '../index';
import { Link } from 'react-router';
import expect from 'expect';
import { shallow, mount } from 'enzyme';
import sinon from 'sinon';
import React from 'react';
describe('<OffCanvasMenu />', () => {
it('contains 5 <Link /> components', () => {
const wrapper = shallow(<OffCanvasMenu />);
expect(wrapper.find(<Link />)).to.have.length(5);
});
});
Run Code Online (Sandbox Code Playgroud)
此代码基本上直接来自airbnb/enzyme docs,但返回错误:
FAILED TESTS:
<OffCanvasMenu />
? contains 5 <Link /> components
Chrome 52.0.2743 (Mac OS X 10.11.6)
TypeError: Cannot read …Run Code Online (Sandbox Code Playgroud) 今天早上奇怪的问题 - 我无法使用SSH或HTTPS从GitHub上的公共仓库克隆到我的共享VMWare文件夹.我正在使用Fedora 22,如果我在除共享文件夹之外的系统上的任何地方尝试此命令,它的工作完美.
git clone https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
fatal: 'origin' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)
我试过的步骤:
有谁知道为什么共享文件夹可能导致这个?
我正在使用以下代码根据来自props的布尔值在React组件中动态设置className:
<div className={this.props.menuOpen ? 'inactive' : 'active'}>
...
</div>
但是,我也使用CSS模块,所以现在我需要将className设置为:
import styles from './styles.css';
<div className={styles.sideMenu}>
...
</div>
我遇到了这个问题 - 我尝试使用类名来获得更多对多个类的控制,但是因为我需要最终结果是className被设置为两个styles.sideMenu AND styles.active(为了让CSS模块启动)我是不确定如何处理这个问题.
任何指导都非常感谢.
我有一个ReactCSSTransitionGroup我正在使用CSS模块(和react-router的动态路由,但我相信这是按预期工作).
<ReactCSSTransitionGroup
component="div"
transitionName={transitions}
transitionAppear
transitionAppearTimeout={1000}
transitionEnterTimeout={2000}
transitionLeaveTimeout={2000}
>
{React.cloneElement(this.props.children, {
key: location.pathname,
})}
</ReactCSSTransitionGroup>
Run Code Online (Sandbox Code Playgroud)
在appear与leave过渡完美地工作-但enter过渡不-他们只是立即出现,与以前的组件淡出新的组件已进入后.
CSS(使用CSS模块):
.enter {
opacity: 0.01;
}
.enter.enterActive {
opacity: 1;
transition: opacity 500ms ease-in;
}
.leave.leaveActive {
opacity: 0.01;
transition: opacity 2000ms ease-in;
}
.appear {
opacity: 0.1;
transition: opacity 1000ms ease-out;
}
.appearActive {
opacity: 1;
transition: opacity 1000ms ease-out;
}
Run Code Online (Sandbox Code Playgroud)
---编辑---
我发现它在儿童路线上按预期工作(我的应用程序中只有少数几个).包括子路由在内的所有路由都是动态加载的,所以我仍然不确定是什么原因导致它在这些情况下起作用而在其他情况下不起作用.
在ES6中使用find或者filter我很乐意迭代使用值来查找数组中的元素.
但是,我试图根据嵌套数组中的值从父数组中获取值.
例如,在此数据结构中:
products: [
{
id: 01,
items: [
{
id: 01,
name: 'apple'
},
{
id: 02,
name: 'banana'
},
{
id: 03,
name: 'orange'
}
]
},
{
id: 02,
items: [
{
id: 01,
name: 'carrot'
},
{
id: 02,
name: 'lettuce'
},
{
id: 03,
name: 'peas'
}
]
},
{
id: 03,
items: [
{
id: 01,
name: 'eggs'
},
{
id: 02,
name: 'bread'
},
{
id: 03,
name: …Run Code Online (Sandbox Code Playgroud) 在设置了盐主人和一个小兵后,我能够接受主人的钥匙.跑步sudo salt-key -L表明它被接受了.但是,当我尝试test.ping命令时,主人显示:
Minion没有回来.[没有反应]
在主服务器上,日志显示:
[错误] [1642]来自minion-01的身份验证尝试失败,挂起的公钥不匹配.这可能是试图破坏Salt集群.
在小兵身上,日志显示:
[错误] [1113] Salt Master已缓存此节点的公钥,此盐爪将在尝试重新验证之前等待10秒
我尝试断开连接并重新连接,包括重新启动两个盒子.
我有一个使用react-router的简单组件(我知道这是alpha版本):
{props.app && props.app.health &&
<Match exactly pattern="/" component={HomeLogin} />
}
Run Code Online (Sandbox Code Playgroud)
文档建议在<MemoryRouter />测试时包装以提供组件的上下文.
然而,使用Jest/Enzyme我无法shallow()渲染 - 我必须使用Enzyme's mount()或者render()因为HomeLogin是连接组件而导致问题- 我希望能够测试我的组件呈现正确的东西,但不测试组件在其中呈现.
我的测试:
it('Renders based upon matched route', () => {
let props = {
app: { health: true },
};
const component = render(
<Provider store={store}>
<MemoryRouter location="/">
<Jumbotron {...props} />
</MemoryRouter>
</Provider>
);
expect(toJson(component)).toMatchSnapshot();
});
Run Code Online (Sandbox Code Playgroud)
如何根据路径测试此组件的输出,而无需提供redux存储或使用浅渲染?
更新:如果我尝试使用shallow()快照渲染没有输出.
我通过django-webpack-loader在Django中使用Vue应用程序工作,在本地运行,我可以通过在base.html文件中使用以下命令使其工作:
{% load render_bundle from webpack_loader %}
...
...
{% render_bundle 'app' %}
Run Code Online (Sandbox Code Playgroud)
然而,在生产中这是行不通-我相信,因为生产的WebPack配置使用CommonChunksPlugin分裂成捆app,manifest和vendor。
在线上没有太多文档将Webpack与Django合并-我想知道是否有一种方法可以将所有块都包含在Django模板中。
由于某种原因,我无法使用导出为es6模块的数组:
export const choices = [
['first', 'First'],
['second', 'Second'],
['third', 'Third'],
]
Run Code Online (Sandbox Code Playgroud)
然后:
import { choices } from './constants'
console.log(choices) // undefined
Run Code Online (Sandbox Code Playgroud)
如果我只是const在尝试使用它的同一个文件中声明,则它会按预期工作。
javascript ×4
reactjs ×4
css-modules ×2
ecmascript-6 ×2
enzyme ×2
jestjs ×2
testing ×2
arrays ×1
django ×1
es6-modules ×1
git ×1
react-router ×1
salt-stack ×1
webpack ×1