Javascript 如何使用即时异常进行测试
我是一个开玩笑的初学者,我正在做一个程序来学习更多的JS。测试可以工作,但是这个try/catch可以被异常所取代吗?我相信这仍然不是开玩笑进行测试的最佳方式Javascript 如何使用即时异常进行测试,javascript,node.js,unit-testing,jestjs,Javascript,Node.js,Unit Testing,Jestjs,我是一个开玩笑的初学者,我正在做一个程序来学习更多的JS。测试可以工作,但是这个try/catch可以被异常所取代吗?我相信这仍然不是开玩笑进行测试的最佳方式 import Category from "../app/models/Category.js" describe("Test for category", () => { it("error for null category", () => { tr
import Category from "../app/models/Category.js"
describe("Test for category", () => {
it("error for null category", () => {
try {
new Category(null)
console.log("Error: category was created even as null name")
} catch (err) {
expect(err.message)
}
})
it("Error for empty category", () => {
try {
new Category(" ")
console.log("Error: category was created with an empty field")
} catch (err) {
expect(err.message)
}
})
it("Category registration", () => {
try {
new Category("Devops")
console.log("Category was created successfully!")
} catch (err) {
expect(err.message)
}
})
})
这是我的班级:
import { isEmpty, isNull } from "../validate.js"
export default class Category {
constructor(name) {
this.name = name
}
set name(name) {
if (isEmpty(name) || isNull(name)) throw new Error(`The category field needs to be filled`)
this._name = name
}
get name() {
return this._name
}
}
validate.js
export const isEmpty = value => !notEmpty(value)
export const isNull = value => value === null
谢谢你的帮助 使用
注意:您必须将代码包装在函数中,否则错误将不会被捕获,断言将失败
Category.js
:
import{isEmpty,isNull}来自“/validate”;
导出默认类类别{
建造师(姓名){
this.name=名称;
}
集合名称(名称){
如果(isEmpty(name)| isNull(name))抛出新错误(`category字段需要填充`);
这个。_name=name;
}
获取名称(){
返回此。\u名称;
}
}
Category.test.js
:
从“/Category”导入类别;
描述('类别测试',()=>{
它('空类别错误',()=>{
expect(()=>newcategory(null)).TothRowerr('Category字段需要填充');
});
它('空类别错误',()=>{
expect(()=>newcategory(“”)).TothRower('Category字段需要填充');
});
它('类别注册',()=>{
常数c=新类别(“Devops”);
expect(c._name).toBe('Devops');
});
});
单元测试结果和覆盖率报告:
PASS src/stackoverflow/64217332/Category.test.js
Test for category
✓ error for null category (11ms)
✓ Error for empty category (2ms)
✓ Category registration (1ms)
-------------|----------|----------|----------|----------|-------------------|
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
-------------|----------|----------|----------|----------|-------------------|
All files | 92.31 | 100 | 83.33 | 88.89 | |
Category.js | 85.71 | 100 | 66.67 | 83.33 | 13 |
validate.js | 100 | 100 | 100 | 100 | |
-------------|----------|----------|----------|----------|-------------------|
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 5.502s, estimated 17s
请提供
notEmpty
函数。此处:export const notEmpty=value=>(value==“”?false:true)