小编Igo*_*ler的帖子

使用 Jest 模拟 NextJS 路由器事件

我正在尝试用 Jest 模拟 NextJS 路由器事件。在NextJS router & Jest找到了相关资源。那里的实现与我的非常相似。

但是,那里提到的解决方案对我不起作用。

我的测试如下:

import { mount, ReactWrapper } from 'enzyme';
import FavoritesPage from 'pages/user/favorites';
import configureStore, { MockStore } from 'redux-mock-store';
import storeInitialState from '__tests__/unit/support/storeInitialState';
import { Provider } from 'react-redux';
import { waitFor } from '@testing-library/react';
import { RequestStates } from 'types/State';
import useAdSetup from 'lib/hooks/useAdSetup';

const mockRequestState = RequestStates.Finished;

jest.mock('lib/Auth');
jest.mock('lib/EventLogger');
jest.mock('lib/hooks/useAdSetup');

jest.mock('lib/hooks/useFetchFavorites', () => {
  return (): { requestState: RequestStates } => {
    return {
      requestState: mockRequestState,
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jestjs next.js next-router

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

具有 ECS Fargate 的应用程序负载均衡器

我正在尝试为 Fargate ECS 配置负载平衡。我的理解是至少有两个目标群体。一个目标组随应用程序负载均衡器一起创建,一个目标组随 ECS 服务一起创建。

我的容器在 TCP 端口 5000 上运行其服务。我希望负载均衡器仅通过常规 443 端口公开 HTTPS,并将 HTTP 重定向到 HTTPS,或者如果这很困难,则直接删除 HTTP。

我发现监听器允许指定一大堆东西。然而,我对该服务创建的目标群体感到困惑。它 -IP类型组,侦听端口 80。无论我在服务创建/配置期间选择 HTTP 还是 HTTPS。

我的容器从来没有得到任何流量。我启用了负载平衡器日志记录,平衡器似乎不明白我想要它做什么。在"forward" "-" "-" "-" "-" "-" "-"每个请求末尾的日志中。

我跑去aws elbv2 describe-target-groups找定义。

{
  "TargetGroups": [
    {
        "TargetGroupArn": "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:targetgroup/ecs-fargate-api-service-tg/1ebb89754b34d072",
        "TargetGroupName": "ecs-fargate-api-service-tg",
        "Protocol": "HTTPS",
        "Port": 80,
        "VpcId": "vpc-e623dd9b",
        "HealthCheckProtocol": "HTTPS",
        "HealthCheckPort": "traffic-port",
        "HealthCheckEnabled": true,
        "HealthCheckIntervalSeconds": 30,
        "HealthCheckTimeoutSeconds": 5,
        "HealthyThresholdCount": 5,
        "UnhealthyThresholdCount": 2,
        "HealthCheckPath": "/cookie-policy",
        "Matcher": {
            "HttpCode": "200"
        },
        "LoadBalancerArns": [
            "arn:aws:elasticloadbalancing:us-east-1:505963211XXX:loadbalancer/app/node-api-lb/f5e512a2678688f5"
        ],
        "TargetType": …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs amazon-elb

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

来自单个 DotNet Core 项目配置文件的多个二进制文件

我有一堆用于测试/展示网络库的 CLI 实用程序的代码。该库被编译成一个程序集——DotNet Core DLL。

我有几个 CLI 示例展示了如何使用该库,例如,一个搜索使用分页功能,另一个返回所有内容等。基本上,每个都是一个简短的独立 CLI 程序。

我有针对 dotnet 核心的 CS 源文件和 csproj 文件。下面是配置:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <Reference Include="mylib>
      <HintPath>../../bin/Debug/netstandard2.0/publish/mylib.dll</HintPath>
    </Reference>
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

我希望每个源文件都有一个可执行文件,例如PGSample.cs将被编译成PGSample.exe等。我将如何实现这一目标?

c# csproj .net-core

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

用玩笑模拟 setTimeout

我有一个用 React.JS 制作的网站,它不断地为正在发生的所有事情(但什么也没有)发出事件。例如,用户在表单中键入内容,发出事件。用户将焦点放在某个字段上并且一段时间内没有执行任何操作,我们再次发出一个事件。这个想法是为了了解客户的行为。

我有一个以前用作 的按钮<Button onClick={(e)=>handler(e)}/>。我必须对按钮进行去抖并将其更改为<Button onClick={(e)=>setTimeout(handler(e), 1000)}/>。否则,用户不明白发生了什么。

现在,我正在尝试将测试调整为:

  it('displays similar listings', async () => {
    const renderResult = renderVdp(renderParams);

    await new Promise((resolve) => setTimeout(resolve, 1000));
    await waitFor(async () => {
      expect(renderResult.getAllByText('2017 BMW M3')).toHaveLength(4);
    });
  });
Run Code Online (Sandbox Code Playgroud)

通过添加之前的相关测试,我能够保持原始测试的工作await new Promise((resolve) => setTimeout(resolve, 1000));。如果没有它,测试将收到下一个发出的事件,该事件不是作为单击按钮的响应而发出的事件。

我想使用玩笑计时器模拟或类似的东西,而不是在我的测试中实际引入延迟。我尝试过使用jest.useFakeTimers(),但它不能按我的需要工作。我的期望落空了。

建议?

javascript unit-testing mocking settimeout jestjs

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

无服务器框架 WarmUp 插件未被调用

我尝试将 WarmUp 无服务器插件集成到我的项目中。但是,我相信它不起作用。我在 lambda\xe2\x80\x99s CloudWatch 日志组中没有看到 WarmUp 的调用,并且 lambda 在空闲一段时间后确实需要预热时间。

\n

我的配置如下:

\n
service: ${file(./${env:DEPLOY_FILE_NAME}):service}\n\nprovider:\n  name: aws\n  custom:\n    roleName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):roleName}\n    profileName: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):profileName}\n    bundle:\n      ignorePackages:\n        - pg-native\n    warmup:\n      enabled: true\n      events:\n        - schedule: rate(5 minutes)\n      prewarm: true\n  plugins:\n    - pluginHandler\n    - serverless-plugin-warmup\n  runtime: nodejs12.x\n  iamRoleStatements:\n    - Effect: 'Allow'\n      Action:\n        - 'lambda:InvokeFunction'\n      Resource:\n      - Fn::Join:\n        - ':'\n        - - arn:aws:lambda\n          - Ref: AWS::Region\n          - Ref: AWS::AccountId\n          - function:${self:service}-${opt:stage, self:provider.stage}-*\n  cfLogs: true\n  stage: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):stage}\n  region: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):region}\n  memorySize: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):memorySize}\n  timeout: ${file(./${env:DEPLOY_FILE_NAME_STAGE}):timeout}\n  keepWarm: false\n  useApigateway: …
Run Code Online (Sandbox Code Playgroud)

aws-lambda serverless-framework serverless

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