gpt4 book ai didi

javascript - 为什么es6需要构造函数?

转载 作者:行者123 更新时间:2023-11-28 12:16:42 25 4
gpt4 key购买 nike

为什么当我在测试id中写入'new ServerNotificationApi'时不会调用构造函数,对我来说new ServerNotificationApi.constructor()有效,但我无法理解为什么当我写入new ServerNotificationApi时 我在单元测试中遇到错误“TypeError: _serverNotifications.default is not a constructor”

class ServerNotificationApi {
constructor() {
SignalR.initConnection(url.serverNotificationHubName)
}

subscribe = callback => SignalR.subscribe(url.entityChanged, url.serverNotificationHubName, callback);

unsubscribe = callback => SignalR.unsubscribe(url.entityChanged, url.serverNotificationHubName, callback);
}

export default new ServerNotificationApi()

测试

 it('constructor should call signalR method \'initConnection\'', () => {
sinon.stub(SignalR, 'initConnection')

new ServerNotificationApi.constructor()

SignalR.initConnection.calledWith(url.serverNotificationHubName).should.be.true

SignalR.initConnection.restore()
})

最佳答案

export default new ServerNotificationApi()
↑↑↑

您正在导出类的实例,而不是类本身。你本质上是在做:

let foo = new ServerNotificationApi();
new foo();

是的,这不起作用。删除export中的new

关于javascript - 为什么es6需要构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com