小编fgo*_*lez的帖子

使用 jest 模拟多个 axios 调用

我刚刚发现了这种使用 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)

javascript unit-testing jestjs axios

11
推荐指数
1
解决办法
7822
查看次数

错误:Bootstrap的JavaScript需要jQuery,使用Webpack

我是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)

javascript jquery twitter-bootstrap webpack isparta

10
推荐指数
2
解决办法
1万
查看次数

TSLint,在import语句中强制括号之间的间距

我需要应用哪条规则来强制执行import语句中大括号之间的空格?

代替 :

import {IPostService} from './api/IPostService';
Run Code Online (Sandbox Code Playgroud)

我想要:

import { IPostService } from './api/IPostService';
Run Code Online (Sandbox Code Playgroud)

javascript typescript tslint

9
推荐指数
1
解决办法
2805
查看次数

EJB中的多线程

我正在学习EJB,到目前为止我已经读过EJB中不允许多线程,因为它是应该关心线程安全的容器,让开发人员只关注业务逻辑,所以基本上这意味着EJB确保只有一个线程可以同时访问Session bean中的方法.

当我们有许多用户访问EJB中的相同方法时会发生什么?容器是序列化的,还是正在创建bean的不同实例,每个线程一个?

有人可以解释一下这个政策是什么?另外我有点困惑,为什么不允许多线程,所以我们不能创建自己的线程,为什么我们有@Asynchronous注释?

java multithreading ejb-3.0

6
推荐指数
1
解决办法
2631
查看次数

HashSet和HashMap如何在Java中工作?

我对内部实现的有点糊涂了HashSet,并HashMap在Java中.

这是我的理解,所以如果我错了请纠正我:

无论是HashSetHashMap允许重复的元素.

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,我们用新值替换旧值.

我有点困惑,有人可以向我澄清一下吗?

java hashmap hashset

4
推荐指数
1
解决办法
802
查看次数

reactjs中的渲染功能

快速提问。我正在学习React JS。

创建组件时,我们在render函数中提供要渲染的组件的html模板。到目前为止,我只看到了很小的html小组件,但是我只是想知道如果我们的组件带有巨大的html模板会发生什么情况,有没有办法提供指向单独的html文件的路径?还是我们被迫直接在render函数中编写所有html?谢谢!

javascript reactjs

4
推荐指数
1
解决办法
9842
查看次数

导出默认不工作webpack,reactjs

我是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)

javascript ecmascript-6 reactjs webpack

4
推荐指数
1
解决办法
1万
查看次数

AWS cloudformation错误:模板验证错误:模板错误:资源NotificationsTopic不支持Fn :: GetAtt中的属性类型Arn

我正在尝试使用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

4
推荐指数
1
解决办法
3818
查看次数

Redux:只有Reducer功能允许同步调用吗?

我有一个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)

javascript reactjs redux react-redux

3
推荐指数
1
解决办法
1346
查看次数

使用Java 8流API和lambdas来操作地图

我有一个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安全集合的收集器吗?

java lambda multithreading java-8 java-stream

3
推荐指数
1
解决办法
180
查看次数