90 lines
1.7 KiB
Markdown
90 lines
1.7 KiB
Markdown
# 测试代码规范 `[JsTs.TestCode]`
|
|
|
|
下面是 JS/TS 的测试代码规范.
|
|
|
|
## 测试文件命名 `[JsTs.TestCode.FileName]`
|
|
|
|
- 必须以 `.test.js` 或 `.test.ts`(或 `.spec.ts`)结尾。
|
|
- 前缀部分应与被测试源文件名保持一致。
|
|
|
|
### Example: 测试文件命名
|
|
|
|
#### Good: 测试文件名与源文件名一致
|
|
|
|
```javascript
|
|
// userInfo.js
|
|
// userInfo.test.js
|
|
describe("UserInfo", () => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
#### Bad: 测试文件名与源文件名不一致
|
|
|
|
```javascript
|
|
// userInfo.js
|
|
// userinfo.test.js
|
|
describe("userinfo", () => {
|
|
// ...
|
|
});
|
|
```
|
|
|
|
## 测试代码块命名 `[JsTs.TestCode.BlockName]`
|
|
|
|
- 测试代码命名结构:`describe(文件名)` -> `describe(函数名/类名.方法名)` -> `it(场景描述)`。
|
|
- 场景描述应使用 "should ..." 格式,描述预期行为。
|
|
|
|
### Example: 测试代码块命名
|
|
|
|
#### Good: 使用 describe(文件名) -> describe(函数名/类名.方法名) -> it(场景描述)
|
|
|
|
```javascript
|
|
// uUerInfo.js
|
|
export class UserInfo {
|
|
getUserInfo() {
|
|
// ...
|
|
}
|
|
}
|
|
|
|
// userInfo.test.js
|
|
describe("UserInfo", () => {
|
|
describe("UserInfo.getUserInfo", () => {
|
|
it("should return user info", () => {
|
|
// ...
|
|
});
|
|
});
|
|
});
|
|
```
|
|
|
|
```javascript
|
|
// userInfo.js
|
|
export function getUserInfo() {
|
|
// ...
|
|
}
|
|
|
|
// userInfo.test.js
|
|
describe("userInfo", () => {
|
|
describe("getUserInfo", () => {
|
|
it("should return user info", () => {
|
|
// ...
|
|
});
|
|
});
|
|
});
|
|
```
|
|
|
|
#### Bad: 缺少 describe(函数名/类名.方法名) 层级
|
|
|
|
```javascript
|
|
// userInfo.js
|
|
export function getUserInfo() {
|
|
// ...
|
|
}
|
|
|
|
// userInfo.test.js
|
|
describe("userInfo", () => {
|
|
it("should return user info", () => {
|
|
// ...
|
|
});
|
|
});
|
|
```
|