我似乎无法找到区分这三个注释之间差异的摘要.
我想让我的第一个Jest Test通过React和Babel.
我收到以下错误:
SyntaxError:/Users/manueldupont/test/avid-sibelius-publishing-viewer/src/components/TransportButton/TransportButton.less:意外的令牌
> 7 | @import '../variables.css';
| ^
Run Code Online (Sandbox Code Playgroud)
我的package.json配置为jest看起来像这样:
"babel": {
"presets": [
"es2015",
"react"
],
"plugins": [
"syntax-class-properties",
"transform-class-properties"
]
},
"jest": {
"moduleNameMapper": {
"^image![a-zA-Z0-9$_-]+$": "GlobalImageStub",
"^[./a-zA-Z0-9$_-]+\\.png$": "RelativeImageStub"
},
"testPathIgnorePatterns": [
"/node_modules/"
],
"collectCoverage": true,
"verbose": true,
"modulePathIgnorePatterns": [
"rpmbuild"
],
"unmockedModulePathPatterns": [
"<rootDir>/node_modules/react/",
"<rootDir>/node_modules/react-dom/",
"<rootDir>/node_modules/react-addons-test-utils/",
"<rootDir>/node_modules/fbjs",
"<rootDir>/node_modules/core-js"
]
},
Run Code Online (Sandbox Code Playgroud)
那我错过了什么?
在Jest中,有没有办法忽略测试覆盖的代码?我试过用
/* istanbul ignore next */
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
我使用create-app-component创建了一个项目,它使用构建脚本(babel,webpack,jest)配置新的应用程序.
我写了一个我正在尝试测试的React组件.该组件需要另一个javascript文件,公开一个函数.
我的search.js文件
export {
search,
}
function search(){
// does things
return Promise.resolve('foo')
}
Run Code Online (Sandbox Code Playgroud)
我的反应成分:
import React from 'react'
import { search } from './search.js'
import SearchResults from './SearchResults'
export default SearchContainer {
constructor(){
this.state = {
query: "hello world"
}
}
componentDidMount(){
search(this.state.query)
.then(result => { this.setState({ result, })})
}
render() {
return <SearchResults
result={this.state.result}
/>
}
}
Run Code Online (Sandbox Code Playgroud)
在我的单元测试中,我想检查是否search使用正确的参数调用了该方法.
我的测试看起来像这样:
import React from 'react';
import { shallow } from 'enzyme';
import should from 'should/as-function'; …Run Code Online (Sandbox Code Playgroud) 为什么我的第一个孩子选择器不在Less中工作?
.leftPanel{
margin:20px;
float:left;
display:inline;
width:620px;
margin-left:10px;
select{
width:300px;
&:first-child{
margin-right: 30px;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用webpack-provide-plugin导入反应.
new webpack.ProvidePlugin({
"React": "react",
}),
Run Code Online (Sandbox Code Playgroud)
// text.jsx
let text = (props) => (
<div>
<p class="text">this.props.text</p>
</div>
)
export default text
Run Code Online (Sandbox Code Playgroud)
//text.test.js
import React from 'react';
import { shallow } from 'enzyme';
import text from 'text';
it('Renders text', () => {
const wrapper = shallow(<text/>);
expect(wrapper.hasClass("text")).toEqual(true);
});
Run Code Online (Sandbox Code Playgroud)
但是当用jest运行反应组件测试时,我得到了错误
ReferenceError: React is not defined
Run Code Online (Sandbox Code Playgroud)
当然,因为反应不是明确导入的.除了显式导入和放弃提供插件之外,有没有办法解决这个问题?
使用WebStorm 10.0
我目前正在学习Node Js并安装它需要工作的所有组件.所以我选择使用Jest来测试我的工作,我已经在WebStorm中安装了Jest到我的框架和语言,但它仍然将Promise显示为未解析的类型我如何在WebStorm中修复它?
我正在使用jQuery UI自动完成,如[http://api.jqueryui.com/autocomplete/]所述
我需要在执行搜索之前和之后做一些事情.通过阅读上述URL中的文档,它描述了在查询运行之前和之后触发的两种方法"搜索"和"响应" - 完美.但是,如果我将这些添加到我的代码中,"搜索"可以完美地工作,但"响应"永远不会被调用.我究竟做错了什么?我的所有代码都有效,没有javascript错误,自动完成功能完美无缺.但我只是没有触发"响应"方法.
$(function() {
$("#tv").autocomplete({
source: "a_url_providing_json",
minLength: 4,
select: function(event, ui) {
$('#state_id').val(ui.item.id);
$('#abbrev').val(ui.item.abbrev);
},
search : function(a,b) {
alert('this works!');
},
response : function(a,b) {
alert('this doesnt!');
}
})
});
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议!
考虑以下代码:
Date date = new SimpleDateFormat("MMddyyyy").parse("01011500");
LocalDate localDateRight = LocalDate.parse(formatter.format(date), dateFormatter);
LocalDate localDateWrong = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()).toLocalDate();
System.out.println(date); // Wed Jan 01 00:00:00 EST 1500
System.out.println(localDateRight); // 1500-01-01
System.out.println(localDateWrong); // 1500-01-10
Run Code Online (Sandbox Code Playgroud)
我知道1582年是Julian和Gregorian日历之间的截止点.我不知道为什么会发生这种情况,或者如何调整它.
这是我到目前为止所发现的:
BaseCalender设置为的日期JulianCalendardate.toInstant() 回来 Instant.ofEpochMilli(getTime())date.getTime() 返回-14830974000000所以似乎要么返回的毫秒getTime()是错误的(不太可能),要么与我预期的不同,我需要考虑差异.
我正在尝试使用jest(集成测试)在基于反应本机的应用程序中测试apiwrapper.当我在iOs模拟器中运行时,一切运行正常,但它不会正确运行我的开玩笑测试 - 我总是得到:
ReferenceError: XMLHttpRequest is not defined
Run Code Online (Sandbox Code Playgroud)
当我尝试使用我的api包装器运行测试时,例如:
it('Login successful with correct data', () => {
let api = Api.getInstance();
return api.login("test", "testpass")
.then(result => expect(result).toEqual('login_successful'));
});
Run Code Online (Sandbox Code Playgroud)
我试图在这里测试的api类确实使用了fetch api(不是vanilla xhr).我假设它的某些东西与试图嘲笑某些东西有关,但还没有找到让它工作的方法.
提前致谢.
jestjs ×6
reactjs ×3
java ×2
babel ×1
babel-jest ×1
css ×1
date ×1
datetime ×1
es6-modules ×1
hibernate ×1
import ×1
istanbul ×1
java-8 ×1
java-time ×1
javascript ×1
jquery ×1
jquery-ui ×1
less ×1
mocking ×1
react-native ×1
unit-testing ×1
validation ×1
webpack ×1
webstorm ×1