导出代码块而不是仅函数



当前在我的代码中,我有VehicleFactory我想单位测试。在声明函数之后,分配了VehicleFactoryprototype

    export function VehicleFactory() {
    }
    VehicleFactory.prototype.vehicleClass = Car;
    VehicleFactory.prototype.createNewVehicle = function(options) {
        if( options.vehicleType === 'Car') {
            this.vehicleClass = Car;
        }
        else if( options.vehicleType === 'Truck') {
            this.vehicleClass = Truck;
        }
        return new this.vehicleClass(options);
    }
    var factory = new VehicleFactory();
    var car = factory.createNewVehicle( {
        vehicleType: "car",
        color: "yellow",
        doors: 6 } );
function Car(options) {
    if( options.brand != undefined)
        this.brand = options.brand;
    else
        this.brand = "Jeep";
    if( options.color != undefined)
        this.color = options.color;
    else
        this.color = "White";
}
function Truck(options) {
    /// ...
}

    console.log(car);

在我的玩笑中:

import VehicleFactory from '../VehicleFactory'
test('vehicleFactory_withCarOptions_AlwaysReturnsCar', () => {
  var factory = new VehicleFactory();
  var car = factory.createNewVehicle( {
    vehicleType: "car",
    color: "yellow",
    doors: 6 } );
  expect(car).toEqual({color: "yellow",
  doors: 6});
});

错误显示:

TypeError: _VehicleFactory.default is not a constructor
  20 |
  21 | test('vehicleFactory_withCarOptions_AlwaysReturnsCar', () => {
> 22 |   var factory = new VehicleFactory();
     |                 ^
  23 |   var car = factory.createNewVehicle( {
  24 |     vehicleType: "car",
  25 |     color: "yellow",

我的猜测是export仅导出空功能,而不是将以下分配导出到原型?如何修复它?

问题是我忘记了 import

中的括号

而不是 import VehicleFactory from '../VehicleFactory'

应该是import {VehicleFactory} from '../VehicleFactory'

对于命名导出,我应该使用括号,

对于默认导出,我不需要括号,因为一个模块只有一个默认导出。

最新更新