javascript - 关于 typeof class 的澄清

标签 javascript unit-testing

所以我正在编写一些测试用例。我有一个类(class)如下。

export default class DateProcessor {
    requestHandler = (req, res) => {
        //code
    }
}

现在我正在编写一个单元测试来查看 DateProcessor 的类型是否为类

import {default as processor} from './getDatesProcessor';

describe('Date Processor', () => {
    it('should be a class', () => {
        expect(typeof processor).toBe('class');
    })
});

但是测试用例失败了,因为我将类型作为函数而不是类获取。 我想知道这是否是预期的行为,或者我没有做正确的事情。

最佳答案

您问题的答案是:是的,这是预期行为

说明:
在 JavaScript 中,没有类这样的东西。 class 关键字只是一种语法,可以更轻松地根据最佳实践创建原型(prototype)。事实上,所有这些实际上都是函数。您可以使用 typeof 关键字进行检查,该关键字在应用于时将返回function。此外,这在 JavaScript 中也是可能的:

function Person(name) {
  this.name = name;
}

Person.prototype.getName = function () {
  return this.name;
}

class Student extends Person {

  constructor(name, studies) {
    super(name);
  
    this.studies = studies;
  }
  
  getStudies() {
    return this.studies;
  }
}

const s = new Student('John', 'Maths');
console.log(s.getName(), s.getStudies());

有关 JS 中的类的更多信息,here

关于javascript - 关于 typeof class 的澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58835120/

相关文章:

javascript - React & Redux : Uncaught TypeError: (0 , _reactRedux.connect) 不是函数

node.js - require.main.require 有效,但不在 Mocha 测试中

angularjs - 测试 ui.router $stateChangeSuccess

javascript - 在 sails.js 中模拟/ stub 全局变量

javascript - 从数据库中检索自上次更新以来的新条目

javascript - 按类别分类的复选框全部选中

javascript - 展开折叠树

javascript - 正则表达式不返回 javascript 中的所有匹配项

java - Java 8 LocalDate 的 Hamcrest 匹配器

android - 当对函数进行单元测试时,当您模拟它使用的函数时,最佳实践是什么