在我的<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://${db.host}:${db.port}/${db.db}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
<property name="connectionProperties">
<props>
<prop key="allowMultiQueries">true</prop>
<prop key="useUnicode">yes</prop>
<prop key="characterEncoding">utf8</prop>
<prop key="autoReconnect">true</prop>
<prop key="failOverReadOnly">false</prop>
<prop key="maxReconnects">10</prop>
</props>
</property>
</bean>
事件中,我将onGridReady
分配给api
。
this.gridApi
我有一种使用private onGridReady(gridReadyEvent: GridReadyEvent): void {
this.gridApi = gridReadyEvent.api;
}
的方法。
this.gridApi
我正在为public getGridState(): GridState {
if (this.gridApi) {
// code to get state
}
}
编写单元测试。
单元测试:
getGridState
因此,为了确保定义了it('should be able to get state of grid', async () => {
waitForGridApiToBeAvailable(component.gridOptions, () => {
component.getGridState();
});
});
,我使用的是ag-Grid unit testing doc中提到的this.gridApi
。因此,这意味着在定义waitForGridApiToBeAvailable
时,gridOptions.api
也是如此,对吗?
问题:
运行单元测试时,只有在定义了this.gridApi
之后,component.getGridState()
才会调用component.gridOptions.api
,而this.gridApi
中的undefined
是getGridState()
。
除此之外,令我更困惑的是,onGridReady()
在调用getGridState()
之后被调用,而当我安慰this.gridOptions.api
时,结果是{{1} }。在检查null
被定义并在this.gridOptions.api
之后被调用null
之后,从单元测试中调用getGridState()
时,component.gridOptions.api
如何成为onGridReady()
?
注意:我已尽力解释得尽可能清楚。让我知道是否需要更多解释。