小编jay*_*ayp的帖子

尝试从jest单元测试连接到mongo时超时

我想用jest和mongoose编写一些单元测试来验证与mongo的数据交互.

我不想在这里模仿mongoose,因为我特别想要验证创建/修改/处理mongo文档的方式.

package.json 配置为保留节点模块未建模:

{
  "jest": {
    "unmockedModulePathPatterns": [
      "node_modules"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的实际测试中,我已经设置了一个beforeAll()钩子来处理连接到mongo:

const mongoose = require('mongoose');

describe('MyTest', () => {

  beforeAll((done) => {
    mongoose.connect('mongodb://127.0.0.1:27017/test');

    let db = mongoose.connection;

    db.on('error', (err) => {
      done.fail(err);
    });

    db.once('open', () => {
      done();
    });
  });

  it('has some property', () => {
    // should pass but actually never gets run
    expect(1).toBe(1);
  });
});
Run Code Online (Sandbox Code Playgroud)

这是输出:

/usr/local/bin/node node_modules/jest-cli/bin/jest.js --verbose
Using Jest CLI v0.10.0, jasmine2
 FAIL  src/lib/controllers/my-controller/__tests__/my-test.js (5.403s)
MyTest
  ? it has some property …
Run Code Online (Sandbox Code Playgroud)

unit-testing mongoose mongodb node.js jestjs

13
推荐指数
1
解决办法
1565
查看次数

为什么在定义带有或不带引号的JavaScript对象文字时存在速度差异?

在纯JavaScript中,MDNGoogle JavaScript样式指南建议下面的两个片段是等效的:

// Snippet one
var myObject = {
  "test":"test"
}

// Snippet two
var myObject = {
  test:"test"
}
Run Code Online (Sandbox Code Playgroud)

我编写了一个测试函数,它使用performance.now()(MDN)来测量创建一百万个简单对象所需的时间:

function test(iterations) {
  var withQuotes = [];
  var withoutQuotes = [];

  function testQuotes() {
      var objects = [];
      var startTime, endTime, elapsedTimeWithQuotes, elapsedTimeWithoutQuotes;

      // With quotes
      startTime = window.performance.now();

      for (var i = 0; i < 1000000; i++) {
          objects[objects.length] = {
              "test": "test"
          };
      }

      endTime = window.performance.now();
      elapsedTimeWithQuotes = …
Run Code Online (Sandbox Code Playgroud)

javascript performance

8
推荐指数
1
解决办法
194
查看次数

允许 docker-compose 中的多个服务共享合并的卷

给定一个docker-compose.yml像下面这样的文件,我正在寻找一种既可以服务ab可以访问由两个容器的合并内容组成的共享卷的方法。

version: '3'
volumes:
   shared-merged-volume:
services:
   a:
     volumes:
       - shared-merged-volume:/shared
   b:
     volumes:
       - shared-merged-volume:/shared
Run Code Online (Sandbox Code Playgroud)

假设 servicea有一个目录 at/shared/dir-from-a并且 serviceb有一个类似的/shared-dir-from-b目录。想要的结果是:

$ ls /shared # from either container
dir-from-a
dir-from-b
Run Code Online (Sandbox Code Playgroud)

我发现其中一个容器“获胜”并且这两个目录中只有一个存在。我可以解决这样的问题,但更冗长,如果目录内容发生更改,则需要修改:

version: '3'
volumes:
   service-a-shared-volume:
   service-b-shared-volume:
services:
   a:
     volumes:
       - service-a-shared-volume:/shared/dir-from-a
       - service-b-shared-volume:/shared/dir-from-b
   b:
     volumes:
       - service-a-shared-volume:/shared/dir-from-a
       - service-b-shared-volume:/shared/dir-from-b
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助!

docker docker-compose

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

如何在VSCode中快速切换块式和表达式式箭头函数

我的设置:

我试图解决的问题是在块和表达式样式箭头函数之间切换很麻烦。这是一个比较:

// block style
const myBlockStyleArrowFn = () => {
  return {};
}

// expression style
const myExpressionStyleArrowFn = () => ({});
Run Code Online (Sandbox Code Playgroud)

在很多情况下,我真的很喜欢速记表达风格,但是当需要扩展其中一个函数时,总是需要手动添加必要的大括号等。

更糟糕的是,如果我只是尝试进行更改,那么我发现 VSCode 会帮助将我的块样式箭头函数转换回表达式样式(我发现自己插入冗余console.log()语句只是为了防止这种情况发生)。

我真正喜欢的是一个扩展,它可以让我通过快捷方式在两种形式之间切换(也许有一个我还没有找到,或者我应该写一个!)。这是我的问题:

在 VSCode 中在两种形式的 JavaScript 箭头函数之间进行转换的最简单方法是什么?

我知道我可以关闭自动修复功能,但在 99% 的情况下它做得很好,所以我会在那里损失很多。

一如既往地感谢您的帮助。

javascript arrow-functions visual-studio-code

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