我刚刚发现了这种使用 jest 模拟 axios 的有用方法,但是,如果我多次调用具有不同 url 的 axios,我如何根据 url 指定要返回的 url 和值?有没有办法在不使用 3rd 方库的情况下做到这一点?
谢谢
// users.test.js
import axios from 'axios';
import Users from './users';
jest.mock('axios');
test('should fetch users', () => {
const users = [{name: 'Bob'}];
const resp = {data: users};
axios.get.mockResolvedValue(resp);
// or you could use the following depending on your use case:
// axios.get.mockImplementation(() => Promise.resolve(resp))
return Users.all().then(data => expect(data).toEqual(users));
});
Run Code Online (Sandbox Code Playgroud) 我是webpack的新手,但我开始在我的一个项目中使用它来了解它.
我想在引导程序中使用jQuery,但是,当我启动应用程序时,我收到以下错误:
bootstrap.min.js?5802:6未捕获错误:Bootstrap的JavaScript需要jQuery
在我的webpack配置中,我定义了两个入口点,一个用于项目库,一个用于外部源,称为供应商,如jQuery,Bootstrap等.
在供应商中,我已经在jQuery库之后定义了Bootstrap库,但我无法摆脱错误.我缺少的任何线索?
这是我的webapp配置:
import webpack from 'webpack';
import HtmlWebpackPlugin from 'html-webpack-plugin';
import autoprefixer from 'autoprefixer';
let node_dir = __dirname + '/node_modules';
export default {
resolve: {
extensions: ['', '.js', '.jsx'],
alias: {
'jquery': node_dir + '/jquery/dist/jquery.js',
'jquery-validation': node_dir + '/jquery-validation/dist/jquery.validate.js',
'bootstrap': node_dir + '/bootstrap/dist/js/bootstrap.min.js'
}
},
debug: true,
devtool: 'cheap-module-eval-source-map', // more info:https://webpack.github.io/docs/build-performance.html#sourcemaps and https://webpack.github.io/docs/configuration.html#devtool
noInfo: true, // set to false to see a list of every file being bundled.
entry: {
// must be first entry …
Run Code Online (Sandbox Code Playgroud) 我需要应用哪条规则来强制执行import语句中大括号之间的空格?
即
代替 :
import {IPostService} from './api/IPostService';
Run Code Online (Sandbox Code Playgroud)
我想要:
import { IPostService } from './api/IPostService';
Run Code Online (Sandbox Code Playgroud) 我正在学习EJB,到目前为止我已经读过EJB中不允许多线程,因为它是应该关心线程安全的容器,让开发人员只关注业务逻辑,所以基本上这意味着EJB确保只有一个线程可以同时访问Session bean中的方法.
当我们有许多用户访问EJB中的相同方法时会发生什么?容器是序列化的,还是正在创建bean的不同实例,每个线程一个?
有人可以解释一下这个政策是什么?另外我有点困惑,为什么不允许多线程,所以我们不能创建自己的线程,为什么我们有@Asynchronous注释?
我对内部实现的有点糊涂了HashSet
,并HashMap
在Java中.
这是我的理解,所以如果我错了请纠正我:
无论是HashSet
或HashMap
允许重复的元素.
HashSet
由a支持HashMap
,所以在HashSet
我们调用时.add(element)
,我们hashCode()
在元素上调用方法并在内部执行a put(k,v)
到内部HashMap
,其中键是,hashCode
而值是实际对象.因此,如果我们尝试将相同的对象添加到其中Set
,它将看到hashCode
已经存在,然后用新的值替换旧值.
但是,当我读到HashMap
将我们自己的对象存储为关键字时的工作方式时,这似乎与我不一致HashMap
.在这种情况下,我们必须覆盖hashCode()
和equals()
方法并使它们在彼此之间保持一致,因为,如果我们找到相同的密钥hashCode
,它们将转到同一个桶,然后区分所有条目与hashCode
我们必须迭代在条目列表上调用equals()
每个键上的方法并找到匹配项.所以在这种情况下,我们允许相同hashCode
,我们创建一个包含所有具有相同对象的列表的存储桶hashCode
,但是HashSet
如果我们已经找到,则使用a hashCode
,我们用新值替换旧值.
我有点困惑,有人可以向我澄清一下吗?
快速提问。我正在学习React JS。
创建组件时,我们在render函数中提供要渲染的组件的html模板。到目前为止,我只看到了很小的html小组件,但是我只是想知道如果我们的组件带有巨大的html模板会发生什么情况,有没有办法提供指向单独的html文件的路径?还是我们被迫直接在render函数中编写所有html?谢谢!
我是webpack的新手,我开始使用webpack构建一个应用程序并做出反应15,但是它就像导出默认设置无法正常工作,因为我收到错误,因为找不到App组件:
5:9 App not found in './components/App' import/named
Run Code Online (Sandbox Code Playgroud)
在我的index.js的代码下面:
import React from 'react';
import ReactDOM from 'react-dom';
import {Router,Route,IndexRoute,browserHistory} from 'react-router';
import { Provider } from 'react-redux';
import {App} from './components/App';
import {HomePage} from './components/HomePage';
import configureStore from './store/configureStore.js';
import { syncHistoryWithStore } from 'react-router-redux';
const store = configureStore();
const history = syncHistoryWithStore(browserHistory, store);
ReactDOM.render(
<Provider store={store}>
<Router history={history}>
<Route path="/" component={App}>
<IndexRoute component={HomePage}/>
</Route>
</Router>
</Provider>,
document.getElementById('app')
);
Run Code Online (Sandbox Code Playgroud)
并将我的App.js的代码放在components文件夹下:
import React, { PropTypes } from 'react';
const App = …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用yaml模板创建一个AWS cloudformation堆栈。目标是为某些通知创建一个sns主题。我想输出主题arn,以便仅指定主题arn就可以为该主题订阅多个功能。
但是,当我尝试从aws控制台创建堆栈时遇到错误:
“模板验证错误:模板错误:资源NotificationsTopic不支持Fn :: GetAtt中的属性类型Arn”
对于s3存储桶,dynamodb表,我所做的工作完全相同,而且一切正常,但是由于某种原因,对于SNS主题,我无法获得ARN。
我想避免在订阅的所有函数中对主题arn进行硬编码。因为如果有一天ARN主题发生更改,那么我将需要更改所有功能,而我想将主题arn导入所有功能中并使用它。这样,如果将来由于任何原因我有一个新的arn主题,我将无需进行任何修改。
这是模板:
Parameters:
stage:
Type: String
Default: dev
AllowedValues:
- dev
- int
- uat
- prod
Resources:
NotificationsTopic:
Type: AWS::SNS::Topic
Properties:
DisplayName: !Sub 'notifications-${stage}'
Subscription:
- SNS Subscription
TopicName: !Sub 'notifications-${stage}'
Outputs:
NotificationsTopicArn:
Description: The notifications topic Arn.
Value: !GetAtt NotificationsTopic.Arn
Export:
Name: !Sub '${AWS::StackName}-NotificationsTopicArn'
NotificationsTopicName:
Description: Notifications topic name.
Value: !Sub 'notifications-${stage}'
Export:
Name: !Sub '${AWS::StackName}-NotificationsTopicName'
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-sns aws-cloudformation aws-serverless
我有一个reactJs应用程序,现在我正在学习Redux将其用作Flux实现.
我已经创建了一个商店,我已经创建了我的第一个减速器功能,但现在我想到了一些问题,请帮助我理解.
正如您所看到的,我有一个名为'FIND_PRODUCTS'的操作,它基本上是从后端服务获取数据.要调用这个后端服务,我基本上使用异步ajax调用,所以基本上我面临的问题是在我的后端调用完成之前状态是从reducer函数返回的,所以状态没有正确更新,订阅者也没有商店收到的数据不正确.如果我切换到同步调用,这个问题就解决了,但是,我得到的第一个警告是应该避免同步调用,因为它可能会降低用户的体验(性能).
所以我的问题是,我们只能从reducer函数同步获取数据吗?是否应该在reducer函数中发生获取数据,还是有另一种方法可以做到这一点?如果是的话,它是什么?
具有单个对象树的redux模型是否能够在大型应用程序中保持良好的状态?如果我有1000个动作,我的减速器功能中的开关将是巨大的!我们怎么能避免这种情况?
谢谢!!
const initialState = {
availableLocales: [{text: 'En'}, {text: 'Es'}, {text: 'Fr'}],
selectedLocale: 'En',
translations: i18n.getTranslations(),
products: []
};
const reducer = (state = initialState, action = {type: 'NONE'})=> {
//To make the reducer a pure function
deepFreeze(state);
deepFreeze(action);
switch (action.type) {
case 'SWITCH_LOCALE':
let newState = Object.assign({}, state, {
selectedLocale: action.locale,
translations: i18n.getTranslations(action.locale)
});
return newState;
case 'FIND_PRODUCTS':
let newState = Object.assign({}, state, {
products:ProductHelper().findProductsByProductType(action.productType)
});
return newState;
default:
return state
}
return state; …
Run Code Online (Sandbox Code Playgroud) 我有一个Integers的地图,我需要遍历地图的所有条目以将它们添加到String中,但首先,我需要将结果限制为特定的数量,然后根据值对它们进行排序.地图(首先排序然后限制会更有效率).
所以,为了做到这一点,我使用java 8 Stream API和lambdas表达式,这是我到目前为止编写的代码:
Map<Integer, Integer> allHighScoresPerLevel=highScores.get(levelId);
Set<Map.Entry<Integer, Integer>> sortedHighScores=allHighScoresPerLevel.entrySet()
.stream().limit(Configuration.MAX_HIGHSCORES_DISPLAYED)
.map((e)->e).sorted((o1,o2)->(o1.getValue().compareTo(o2.getValue())))
.collect(Collectors.toCollection(TreeSet::new));
Run Code Online (Sandbox Code Playgroud)
但我得到以下异常:
java.util.concurrent.ConcurrentHashMap$MapEntry cannot be cast to java.lang.Comparable
Run Code Online (Sandbox Code Playgroud)
我明白了,一个映射条目没有扩展Comparable所以没有自然的方式对条目进行排序,但我特别在排序方法中提供了一个比较器(lambda)来教授如何对条目进行排序.
所以我有两个问题:
1)这样做的正确方法是什么?我究竟做错了什么?
2)Streams线程是否安全?我在多线程环境中工作,所以我应该使用一个返回Tread安全集合的收集器吗?
javascript ×6
java ×3
reactjs ×3
webpack ×2
amazon-sns ×1
axios ×1
ecmascript-6 ×1
ejb-3.0 ×1
hashmap ×1
hashset ×1
isparta ×1
java-8 ×1
java-stream ×1
jestjs ×1
jquery ×1
lambda ×1
react-redux ×1
redux ×1
tslint ×1
typescript ×1
unit-testing ×1