@Override
    public RouteContext createRouteContext(final QueryContext queryContext, final RuleMetaData globalRuleMetaData, final ShardingSphereDatabase database,
                                           final BroadcastRule rule, final ConfigurationProperties props, final ConnectionContext connectionContext) {
        RouteContext result = new RouteContext();
        BroadcastRouteEngineFactory.newInstance(rule, database, queryContext, connectionContext).route(result, rule);
        return result;
    }
@Test
    void assertCreateBroadcastRouteContextWithSingleDataSource() throws SQLException {
        BroadcastRuleConfiguration currentConfig = mock(BroadcastRuleConfiguration.class);
        when(currentConfig.getTables()).thenReturn(Collections.singleton("t_order"));
        BroadcastRule broadcastRule = new BroadcastRule(currentConfig, DefaultDatabase.LOGIC_NAME, Collections.singletonMap("tmp_ds", new MockedDataSource(mockConnection())), Collections.emptyList());
        broadcastRule.getAttributes().getAttribute(DataNodeRuleAttribute.class).getAllDataNodes().put("t_order", Collections.singletonList(createDataNode("tmp_ds")));
        ShardingSphereDatabase database = mockSingleDatabase();
        RouteContext routeContext = new BroadcastSQLRouter().createRouteContext(
                createQueryContext(), mock(RuleMetaData.class), database, broadcastRule, new ConfigurationProperties(new Properties()), new ConnectionContext(Collections::emptySet));
        assertThat(routeContext.getRouteUnits().size(), is(1));
        RouteUnit routeUnit = routeContext.getRouteUnits().iterator().next();
        assertThat(routeUnit.getDataSourceMapper().getLogicName(), is("tmp_ds"));
        assertThat(routeUnit.getDataSourceMapper().getActualName(), is("tmp_ds"));
        assertFalse(routeUnit.getTableMappers().isEmpty());
    }