小编TDB*_*TDB的帖子

使用 Jest 和 Enzyme 测试 React 组件中的去抖动功能

我正在使用 Jest 和 Enzyme 测试 React 组件,并且很难测试去抖动函数是否被正确调用(或根本调用)。我已经简化了下面的组件代码(经过编辑以使代码更简单),此处链接到 codepen

// uses lodash debounce

class MyApp extends React.Component {
  constructor(props) {
    super()
    this.state = {name: "initial value"};
    this.debouncedFunction = _.debounce(this.debouncedFunction, 3000);
    this.handleClick = this.handleClick.bind(this)
  }
  
  debouncedFunction () {
    this.setState({name: "after delay, updated value"});
  }
  
  handleClick() {
    this.debouncedFunction();
  }
  
  render() {
    return (
      <div>
        <p>{this.state.name}</p>
        <button onClick={this.handleClick}>
          click for debounced function
        </button>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我认为去抖动功能测试应该与非去抖动功能测试非常相似,但带有一个setTimeoutor Promise(expect在.thenor 中带有断言.finally)。在尝试了采用这两种想法的多种测试变体之后,我不再那么确定了。有任何想法吗?

javascript reactjs jestjs enzyme

7
推荐指数
1
解决办法
4406
查看次数

当find涉及单个属性而create涉及多个属性时,实现find_or_create_by

在我的 Rails 应用程序中,我想通过电子邮件查找用户,或者如果该用户不存在,则使用该电子邮件以及一些其他属性创建一个用户。有没有比下面的代码更简单的方法来做到这一点,也许使用find_or_create_by?

def set_user
  if self.user = User.find_by(email: recipient)
  else
    self.user = User.create(email: recipient,
                        password: Devise.friendly_token.first(6),
                        confirmed_at: DateTime.now)
  end
end
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails

5
推荐指数
1
解决办法
1959
查看次数

如何将 Dynamodb Local 集成到 AWS 云开发套件中

使用 aws-cdk 时如何将 DynamoDB Local 集成到开发流程中?例如,以下应用程序(使用“示例应用程序”模板)可以运行,但如何运行sam local invoke <id of the backendHandler lambda>并指向在您的计算机上运行的 DynamoDB Local 实例(而不是必须运行cdk deploy)才能查看实际情况?

// lib/minimal-app-stack.ts

import * as apiGateway from "@aws-cdk/aws-apigateway";
import * as cdk from "@aws-cdk/core";
import {MinimalBackend} from "./minimal-backend";

export class MinimalAppStack extends cdk.Stack {
    constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
        super(scope, id, props);

        const minimalBackend = new MinimalBackend(this, "MinimalBackend");

        new apiGateway.LambdaRestApi(this, "Endpoint", {
            handler: minimalBackend.handler
        });
    }
}

// lib/minimal-backend.ts

import * as cdk from "@aws-cdk/core";
import * …
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb aws-cdk amazon-dynamodb-local

5
推荐指数
0
解决办法
570
查看次数