我正在使用 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)。在尝试了采用这两种想法的多种测试变体之后,我不再那么确定了。有任何想法吗?
在我的 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) 使用 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)