我想用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) 在纯JavaScript中,MDN和Google 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) 给定一个docker-compose.yml像下面这样的文件,我正在寻找一种既可以服务a又b可以访问由两个容器的合并内容组成的共享卷的方法。
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)
在此先感谢您的帮助!
我的设置:
我试图解决的问题是在块和表达式样式箭头函数之间切换很麻烦。这是一个比较:
// block style
const myBlockStyleArrowFn = () => {
return {};
}
// expression style
const myExpressionStyleArrowFn = () => ({});
Run Code Online (Sandbox Code Playgroud)
在很多情况下,我真的很喜欢速记表达风格,但是当需要扩展其中一个函数时,总是需要手动添加必要的大括号等。
更糟糕的是,如果我只是尝试进行更改,那么我发现 VSCode 会帮助将我的块样式箭头函数转换回表达式样式(我发现自己插入冗余console.log()语句只是为了防止这种情况发生)。
我真正喜欢的是一个扩展,它可以让我通过快捷方式在两种形式之间切换(也许有一个我还没有找到,或者我应该写一个!)。这是我的问题:
在 VSCode 中在两种形式的 JavaScript 箭头函数之间进行转换的最简单方法是什么?
我知道我可以关闭自动修复功能,但在 99% 的情况下它做得很好,所以我会在那里损失很多。
一如既往地感谢您的帮助。
javascript ×2
docker ×1
jestjs ×1
mongodb ×1
mongoose ×1
node.js ×1
performance ×1
unit-testing ×1