Javascript 如何使用即时异常进行测试

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

我是一个开玩笑的初学者,我正在做一个程序来学习更多的JS。测试可以工作,但是这个try/catch可以被异常所取代吗?我相信这仍然不是开玩笑进行测试的最佳方式

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)