如果我在控制台中运行,则测试运行正常
mocha --require ts-node/register tests/**/*.spec.ts
Run Code Online (Sandbox Code Playgroud)
注意:我安装了mocha和mocha -g
我想从Visual Studio Code运行单元测试
launcgh.js文件
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Mocha Tests",
"program": "${workspaceFolder}/node_modules/mocha/bin/_mocha",
"args": [
"--require",
"ts-node/register",
"-u",
"tdd",
"--timeout",
"999999",
"--colors",
"${workspaceFolder}/tests/**/*.spec.ts"
],
"internalConsoleOptions": "openOnSessionStart"
},
Run Code Online (Sandbox Code Playgroud)
非常简单的测试文件
import { expect } from 'chai';
const hello = () => 'Hello world!';
describe('Hello function', () => {
it('should return hello world', () => {
const result = hello();
expect(result).to.equal('Hello world!');
});
});
Run Code Online (Sandbox Code Playgroud)
但在Visual Studio Code调试控制台中
/usr/local/bin/node --inspect-brk=15767 node_modules/mocha/bin/_mocha --require …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Chai Promise 测试,但它显示了我正在使用 docker 的错误。
这里有一个简单的函数
let funcPromise = (n) => {
return new Promise((resolve, reject) =>{
if(n=="a") {
resolve("success");
}else {
reject("Fail")
}
})
}
Run Code Online (Sandbox Code Playgroud)
简单的测试
import chai from 'chai';
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
let expect = chai.expect;
let assert = chai.assert;
it('connect: test promise', (done) => {
let func = funcPromise("a");
expect(func).to.eventually.equal("success"); // dont work
expect(func).to.be.rejected; // dont work
})
Run Code Online (Sandbox Code Playgroud)
终端错误
FileTest.spec.ts:43:25 - error TS2339: Property 'eventually' does not exist on type 'Assertion'.
storage/database/MongooseEngine.spec.ts:44:35 - error …
快到2021年了,有没有办法mock单个函数呢?我的意思是没有对象的函数。
// demo.js
module.exports = () => {
return 'real func demo';
};
// demo.test.js
const demo = require("./demo");
// ...
sinon.stub(demo).callsFake(() => {
return 'mocked function';
});
expect(demo()).to.eq('mocked function')
Run Code Online (Sandbox Code Playgroud) 我正在与棱镜棱柱合作,在那prismaObjectType我看到了一些奇怪的东西。这是一个非常基本的例子。
简单的功能,demo(p) p应该是一个对象
function demo(p) {
console.log(p);
console.log(p.normal);
console.log(p.normal());
}
Run Code Online (Sandbox Code Playgroud)
我将传递一个键normal和一个函数作为值
demo({a:"a", normal: function(){console.log("normal")},b:"b"});
Run Code Online (Sandbox Code Playgroud)
它登录控制台
{a: "a", normal: ƒ, b: "b"}
ƒ (){console.log("normal")}
"normal"
Run Code Online (Sandbox Code Playgroud)
奇怪的是我正在传递一个没有单词函数也没有键的方法
demo({a:"a", weird(){ console.log("it is weird") } ,b:"b"});
// console
{a: "a", weird: ƒ, b: "b"}
ƒ weird(){console.log("it is weird")}
it is weird
Run Code Online (Sandbox Code Playgroud)
{a:"a", the weird part >>>>> weird(){console.log("it is weird")} <<< ,b:"b"}
这种做法的名字是什么?任何意见?
javascript ×2
mocha.js ×2
typescript ×2
unit-testing ×2
chai ×1
commonjs ×1
mocking ×1
node.js ×1
sinon ×1