小编Rob*_*ers的帖子

反应打字稿测试 TypeError:MutationObserver 不是构造函数

create-react上周创建了一个 React 应用程序。

我有一个简单的表单,当我单击提交时会显示一条消息。

我想测试一下,这是我创建的测试SampleForm.test.tsx

import React from "react";
import { render, fireEvent, screen, waitFor } from "@testing-library/react";
import SampleForm from "./SampleForm";
import "@testing-library/jest-dom/extend-expect"


test("renders submits form", async () => {
    const str = "THIS DIDNT DO ANYTHING";
    const { container, getByText, findByText } = render(<SampleForm />);

    fireEvent.click(screen.getByText("Submit"));

    await waitFor(() => expect(screen.getByText(str)))
});
Run Code Online (Sandbox Code Playgroud)

我在 waitFor

类型错误:MutationObserver 不是构造函数

堆栈跟踪:

at node_modules/@testing-library/dom/dist/wait-for.js:38:22
      at waitFor (node_modules/@testing-library/dom/dist/wait-for.js:31:10)
      at node_modules/@testing-library/dom/dist/wait-for.js:70:54
      at node_modules/@testing-library/react/dist/pure.js:51:22
      at node_modules/@testing-library/react/dist/act-compat.js:60:24
      at batchedUpdates$1 (node_modules/react-dom/cjs/react-dom.development.js:21856:12)
      at act (node_modules/react-dom/cjs/react-dom-test-utils.development.js:929:14)
      at …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs jestjs

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

如何让Mocha失败测试

我有以下测试:

it.only('validation should fail', function(done) {
    var body = {
        title: "dffdasfsdfsdafddfsadsa",
        description: "Postman Description",
        beginDate: now.add(3, 'd').format(),
        endDate: now.add(4, 'd').format()
    }


    var rules = eventsValidation.eventCreationRules();
    var valMessages = eventsValidation.eventCreationMessages();

    indicative
        .validateAll(rules, body, valMessages)
        .then(function(data) {
            console.log("SHOULD NOT GET HERE");
            should.fail("should not get here");
            done();

        })
        .catch(function(error) {
            console.log("SHOULD GET HERE");
            console.log(error);
        });
    done();
});
Run Code Online (Sandbox Code Playgroud)

测试执行路径是正确的.当我验证数据时,它会"不应该在这里".测试真的是确保它没有.当我输入非验证数据时,代码会转到"应该在这里".因此验证规则有效.

我正在尝试做的是确保当我有错误的验证数据并且验证时测试失败.然而,当我运行它,因为它有良好的数据,它验证,运行失败,但摩卡仍然标记为传递.如果执行"不应该在这里",我希望它失败.

我试过抛出新的错误("失败"); 也没有运气.在这两种情况下,它实际上似乎也在.catch块中运行代码.

有什么建议?我在类似的问题中找到了解决方案.写这个问题是因为这些解决方案似乎对我不起作用.

javascript mocha.js node.js

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

cssmin给了我"Path必须是一个字符串.收到undefined"

我的项目是一个非常基本的yo/angular项目.我有以下cssmin配置.

    useminPrepare: {
      html: '<%= yeoman.app %>/index.html',
      options: {
        dest: '<%= yeoman.dist %>',
        flow: {
          html: {
            steps: {
              js: ['concat', 'uglifyjs'],
              css: ['cssmin']
            },
            post: {}
          }
        }
      }
    },
...
    cssmin: {
      dist: {
        files: {
          '<%= yeoman.dist %>/styles/main.css': [
            '.tmp/styles/{,*/}*.css'
          ]
        }
      }
    },
...
  grunt.registerTask('build', [
    'clean:dist',
    'wiredep',
    'useminPrepare',
    'concurrent:dist',
    'autoprefixer',
    'concat',
    'ngAnnotate',
    'copy:dist',
    'cdnify',
    'cssmin',
    'uglify',
    'filerev',
    'usemin',
    'htmlmin'
  ]);
Run Code Online (Sandbox Code Playgroud)

当我运行grunt构建时,我收到以下错误:

Running "cssmin:generated" (cssmin) task
Warning: Path must be a string. Received undefined Use --force …
Run Code Online (Sandbox Code Playgroud)

gruntjs grunt-usemin grunt-contrib-cssmin yo

8
推荐指数
4
解决办法
6019
查看次数

aws-sdk 抱怨缺少实际存在的 cors 标头

使用 webpack 运行开发服务器,我尝试列出 S3 存储桶中的项目并在浏览器中使用 javascript aws-sdk 控制台输出结果。

\n\n

这样做时我收到此错误:

\n\n
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://bucketname.s3.amazonaws.com/?list-type=2&max-keys=2. (Reason: CORS header \xe2\x80\x98Access-Control-Allow-Origin\xe2\x80\x99 missing).\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是我在 webpack 开发服务器配置中设置了该标头,并通过以下方式证明:

\n\n
curl -I http://localhost:8080\n\nHTTP/1.1 200 OK\nX-Powered-By: Express\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: GET, POST, PUT, DELETE, PATCH, OPTIONS\nAccess-Control-Allow-Headers: X-Requested-With, content-type, Authorization\nX-Content-Type-Options: nosniff\nContent-Type: text/html; charset=utf-8\nContent-Length: 7170\nVary: Accept-Encoding\nDate: Sat, 02 Dec 2017 16:15:04 GMT\nConnection: keep-alive\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我在所有事情上都尝试了*:

\n\n
HTTP/1.1 404 Not Found\nX-Powered-By: Express\nAccess-Control-Allow-Origin: *\nAccess-Control-Allow-Methods: *\nAccess-Control-Allow-Headers: *\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果标头存在,但错误提示标头丢失,是否可能是授权等其他原因?

\n\n

如果它确实是标头设置,那么如果标头确实存在,下一步将是什么?

\n\n

更新**** …

amazon-s3 amazon-web-services aws-sdk-js

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

如何让 @JsonIgnore 工作,以便不递归返回 JSON?

我有以下 Java 类。

@Component
@JsonIgnoreProperties({"begin", "end"})
public class Event extends ResourceSupport {

    @JsonProperty("name")
    private final String name;

    @JsonProperty("description")
    private final String description;

    @JsonProperty("timeZone")
    private final ZoneId timeZone;
    private final LocalDateTime begin;
    private final LocalDateTime end;
Run Code Online (Sandbox Code Playgroud)

这在 REST 服务中返回。无论我做什么,它总是返回 的深层对象表示LocalDateTime,如下所示。

    ...
{"hour":1,"minute":0,"second":0,"nano":0},"midnightEndOfDay":false},{"month":"OCTOBER","timeDefinition":"UTC","standardOffset":{"totalSeconds":3600,"id":"+01:00","rules":{"fixedOffset":true,"transitions":[],"transitionRules":[]}},"offsetBefore":{"totalSeconds":7200,"id":"+02:00","rules":{"fixedOffset":true,"transitions":[],"transitionRules":[]}},"offsetAfter":{"totalSeconds":3600,"id":"+01:00
    ...
Run Code Online (Sandbox Code Playgroud)

我也试过@JsonIgnore直接放在它们上面。

下面是控制器:

@RequestMapping("/api/hello")
    @ResponseBody
    HttpEntity<Event> getEvent() {
        Event event = new Event("name", "description", ZoneId.of("Europe/Paris"), 
                LocalDateTime.now().plusDays(1), LocalDateTime.now().plusDays(2));

        event.add(linkTo(methodOn(EventApi.class).getEvent()).withSelfRel());


        return new ResponseEntity<Event>(event, HttpStatus.OK);

    }
Run Code Online (Sandbox Code Playgroud)

我也在尝试 Spring HATEOAS,所以我不确定这是否与它有关。

由于 SpringBoot 的自以为是,我应该使用不同的开发模式吗?

java jackson spring-boot

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

Angular 2 Karma测试已经开始失败无法捕获浏览器

这似乎是一个项目设置问题.这在以前工作.我不知道这些错误消息可以帮助我开始.有没有人对从哪里开始诊断问题有一些建议?

21 05 2017 07:42:55.094:WARN [karma]: No captured browser, open http://localhost:9876/
21 05 2017 07:42:55.110:INFO [karma]: Karma v1.4.1 server started at http://0.0.0.0:9876/
21 05 2017 07:42:55.110:INFO [launcher]: Launching browser Chrome with unlimited concurrency
21 05 2017 07:42:55.118:INFO [launcher]: Starting browser Chrome                                                                                                                                                                                                        ERROR in /Users/jgreenaw/WebstormProjects/legalcoveapp/node_modules/@angular/core/src/testability/testability.d.ts (41,33): Cannot find name 'Node'.

ERROR in /Users/jgreenaw/WebstormProjects/legalcoveapp/node_modules/@angular/forms/src/directives/ng_form.d.ts (69,22): Cannot find name 'Event'.

ERROR in /Users/jgreenaw/WebstormProjects/legalcoveapp/node_modules/@angular/forms/src/directives/reactive_directives/form_group_directive.d.ts (74,22): Cannot find name 'Event'.

ERROR in /Users/jgreenaw/WebstormProjects/legalcoveapp/node_modules/@ng-bootstrap/ng-bootstrap/rating/rating.d.ts (58,26): Cannot find name 'KeyboardEvent'.

ERROR in /Users/jgreenaw/WebstormProjects/legalcoveapp/node_modules/@ng-bootstrap/ng-bootstrap/typeahead/typeahead.d.ts (81,26): Cannot find name …
Run Code Online (Sandbox Code Playgroud)

karma-runner angular2-testing angular

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

pymongo update_one 不根据 _id 更新

我有这个更改集:

change_set = {'name': 'bso save job again', 'location': 'new york city', 'expires': '2020-04-04', 'created': '2020-03-05'}
Run Code Online (Sandbox Code Playgroud)

使用这个 id(我不是创建这个 id,它实际上是来自早期的保存):

id = '5e6107ddfef5aa3c2e3647b2'
Run Code Online (Sandbox Code Playgroud)

我正在尝试这样做:

result = dbjobs.update_one({'_id': id}, {'$set': change_set})
Run Code Online (Sandbox Code Playgroud)

我的 result.raw_result 是这样的:

{'n': 0, 'nModified': 0, 'ok': 1.0, 'updatedExisting': False}
Run Code Online (Sandbox Code Playgroud)

它没有抛出错误,我只是得到零零钱。难道我更新错了?

python mongodb pymongo

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

lit-element:无法获取对象数组来在循环中渲染输出

刚从点燃元素开始

在我的渲染中我有:

  return html`
   ${this.jobCreate}
   ${this.jobDetails}
  `;
Run Code Online (Sandbox Code Playgroud)

找工作创建工作正常

这是我的工作详情:

  get jobDetails() {
    const jobs = [
      { name: "phoenix job", location: "phoenix", expires: "2020-10-01" },
      { name: "chicago job", location: "chicago", expires: "2020-10-01" },
      { name: "pittsburgh job", location: "pittsburgh", expires: "2020-10-01" },
    ];

    return html`<ul>
      ${jobs.forEach((job) => html`<li>${job.name}</li>`)}
    </ul>`;
  }
Run Code Online (Sandbox Code Playgroud)

检查元素我可以看到一个空<ul>

如果做一个<ul><li>${jobs[2].name}</li></ul>有效的

如果我控制台输出作业,我可以看到所有正确的作业在循环中打印 3 次

我不明白为什么我不能得到<li>在循环中渲染

我用这个作为参考:https ://lit-element.polymer-project.org/guide/templates#template-syntax-cheat-sheet

javascript render typescript lit-element

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

我的 Superset 缓存设置为 Redis,但我仍然在日志中收到缓存警告

我在日志文件中收到缓存警告,但不确定原因。

我的缓存覆盖:

CACHE_CONFIG = {
    'CACHE_TYPE': 'RedisCache',
    'CACHE_DEFAULT_TIMEOUT': 86400,
    'CACHE_KEY_PREFIX': 'superset_',
    'CACHE_REDIS_HOST': 'localhost',
    'CACHE_REDIS_PORT': 6379,
    'CACHE_REDIS_DB': 1,
    'CACHE_REDIS_URL': 'redis://localhost:6379/1'
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过redis而不是RedisCache

日志语句:

2022-05-06 15:03:27,118:INFO:root:配置的类型为 <class 'superset.utils.log.DBEventLogger'> 的事件记录器回退到内置缓存,该缓存将数据存储在元数据数据库中,用于以下缓存:FILTER_STATE_CACHE_CONFIG. 建议使用 RedisCache,MemcachedCache或另一个用于生产部署的专用缓存后端 2022-05-06 15:03:27,123:WARNING:superset.utils.cache_manager:回退到将数据存储在元数据数据库中的内置缓存,对于以下缓存:FILTER_STATE_CACHE_CONFIG. 建议使用 RedisCacheMemcachedCache其他用于生产部署的专用缓存后端 回退到内置缓存,将数据存储在元数据数据库中,用于以下缓存: EXPLORE_FORM_DATA_CACHE_CONFIG。建议使用 RedisCacheMemcachedCache其他专用缓存后端进行生产部署

redis-cache apache-superset

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

带有嵌套属性的 DyanamoDB SCAN

在给定的示例中,我可以通过“order.shortCode”扫描 DynamoDB。控制台指示我不能使用点符号,而且我找不到任何关于它的文档。

{    
  "key2": "cj11b1ygp0000jcgubpe5mso3",
  "order": {
    "amount": 74.22,
    "dateCreated": "2017-04-02T19:15:33-04:00",
    "orderNumber": "cj11b1ygp0000jcgubpe5mso3",
    "shortCode": "SJLLDE"
  },
  "skey2": "SJLLDE"
}
Run Code Online (Sandbox Code Playgroud)

amazon-dynamodb

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

使用 TypeScript 在 Angular 管道中使用 MapToIterable

尝试在 Angular 中实现管道。在意识到 ngFor 不适用于地图之后。一些研究让我相信未来的功能将会解决这个问题,但与此同时,mapToIterable 管道就是答案。

我有以下代码:

import {Pipe, PipeTransform} from '@angular/core';

@Pipe({
  name: 'mapToIterable'
})
export class MapToIterablePipe implements PipeTransform  {
  transform(map: Map<string, Object>, args: any = []): any {
    const a: any[] = [];
    console.log(map.keys());  // <- works as expected
    for (const k in map) {
      if (map.has(k)) {
        console.log("hello");  // <- never executes
        console.log(k);
        a.push({key: k, val: map.get(k)});
      }
    }
    console.log(a); // <- always empty
    return a;
  }
}

export const MAPTOITERABLE_PROVIDERS = [
  MapToIterablePipe
];
Run Code Online (Sandbox Code Playgroud)

map.keys() …

typescript angular-pipe typescript2.0 angular

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

Javascript语法.这是什么:",(错误)=> {}"?

我甚至不知道该怎么称呼它所以不确定如何正确地提出这个问题.什么是运营商,它在做什么?我假设它只是将函数表达式作为回调传递,但语法对我来说是新的.

(错)=>

fs.writeFile('message.txt', 'Hello Node.js', (err) => {
  if (err) throw err;
  console.log('It\'s saved!');
});
Run Code Online (Sandbox Code Playgroud)

javascript node.js

0
推荐指数
1
解决办法
141
查看次数