【问题标题】:Expected Undefined to be an object for Node Module预期未定义是节点模块的对象
【发布时间】:2016-09-07 20:13:56
【问题描述】:

我到底做错了什么。 JS中的函数不是对象吗?

car.js

'use strict';


var Car = function(){

};

export default Car;

car-test.js

import {expect} from 'chai';
import {Car} from '../../src/car';

describe('car', () => {

    it('should have a car to work with', () => {
        expect(Car).to.be.an('object');
    });

});

更新

我什至可以把 var 排除在外,不确定这是否会有所不同,var 仍然指向同一个东西,但我也可以这样做:

function Car(){

};

export default Car;

【问题讨论】:

  • 您的导入错误,这就是为什么Carundefined。应该是import Car from '../../src/car';

标签: javascript node.js ecmascript-6 mocha.js


【解决方案1】:

a/an 测试项目的typeof 值。是的,函数是对象,但它们的 typeof"function"

这只是typeof 为我们提供比"object" 更详细信息的唯一地方(事实上,我想不出另一个;typeof new Date"object",@987654330 @一个正则表达式对象是"object"等)。 typeof 相当模糊,但在这种情况下是具体的。 :-) FWIW,我在我的贫血小博客上介绍了一些类型检查:Say what?

【讨论】:

  • 所以这就是我缺少基础知识的地方。 JS中的函数不是对象吗?
  • 好酷。所以我想确保我可以使用它...所以我应该使用 new 关键字来让这个测试通过吗?
  • @WTF:仅当您想要 A) 实例化 car,并且 B) 如果 car 不是函数,则抛出错误(而不是通过测试)。为什么不expect(car).to.be.a('function');
  • 因为我正在测试对象而不是函数...这是一个节点模块
  • 我把它当作一个对象来使用。
猜你喜欢
  • 2016-03-06
  • 2023-04-01
  • 2018-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多