当前在我的代码中,我有VehicleFactory
我想单位测试。在声明函数之后,分配了VehicleFactory
的prototype
:
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'
对于命名导出,我应该使用括号,
对于默认导出,我不需要括号,因为一个模块只有一个默认导出。