|
|
@@ -151,20 +151,24 @@ describe('AreaSelect 集成测试', () => {
|
|
|
</TestWrapper>
|
|
|
);
|
|
|
|
|
|
- // 等待省份数据加载
|
|
|
+ // 使用test ID查找省份选择框
|
|
|
+ const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
+ // 等待省份数据加载并启用
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在省份')).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).not.toHaveAttribute('disabled');
|
|
|
});
|
|
|
|
|
|
- // 使用test ID查找省份选择框
|
|
|
- const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
await user.click(provinceSelect);
|
|
|
|
|
|
- // 等待下拉菜单出现并选择北京市
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
+ // 选择北京市 - 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const hiddenSelect = screen.getByTestId('area-select-province').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (hiddenSelect) {
|
|
|
+ await user.selectOptions(hiddenSelect, '1');
|
|
|
+ // 触发change事件
|
|
|
+ fireEvent.change(hiddenSelect, { target: { value: '1' } });
|
|
|
+ }
|
|
|
|
|
|
// 验证onChange被调用
|
|
|
expect(handleChange).toHaveBeenCalledWith({
|
|
|
@@ -188,33 +192,36 @@ describe('AreaSelect 集成测试', () => {
|
|
|
</TestWrapper>
|
|
|
);
|
|
|
|
|
|
- // 等待省份数据加载
|
|
|
+ // 先选择省份(北京市)
|
|
|
+ const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
+ // 等待省份数据加载并启用
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在省份')).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).not.toHaveAttribute('disabled');
|
|
|
});
|
|
|
|
|
|
- // 先选择省份(北京市)
|
|
|
- const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
await user.click(provinceSelect);
|
|
|
await waitFor(() => {
|
|
|
expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
});
|
|
|
await user.click(screen.getByText('北京市'));
|
|
|
|
|
|
- // 等待城市数据加载
|
|
|
+ // 等待城市数据加载并启用
|
|
|
+ const citySelect = screen.getByTestId('area-select-city');
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在城市')).toBeInTheDocument();
|
|
|
- });
|
|
|
+ expect(citySelect).toBeInTheDocument();
|
|
|
+ expect(citySelect).not.toHaveAttribute('disabled');
|
|
|
+ }, { timeout: 2000 });
|
|
|
|
|
|
// 点击城市选择框
|
|
|
- const citySelect = screen.getByTestId('area-select-city');
|
|
|
await user.click(citySelect);
|
|
|
|
|
|
- // 选择北京市(城市)
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
+ // 选择北京市(城市)- 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const cityHiddenSelect = screen.getByTestId('area-select-city').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (cityHiddenSelect) {
|
|
|
+ await user.selectOptions(cityHiddenSelect, '3');
|
|
|
+ }
|
|
|
|
|
|
// 验证onChange被调用
|
|
|
expect(handleChange).toHaveBeenCalledWith({
|
|
|
@@ -238,46 +245,55 @@ describe('AreaSelect 集成测试', () => {
|
|
|
</TestWrapper>
|
|
|
);
|
|
|
|
|
|
- // 等待省份数据加载
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在省份')).toBeInTheDocument();
|
|
|
- });
|
|
|
-
|
|
|
// 先选择省份(北京市)
|
|
|
const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
- await user.click(provinceSelect);
|
|
|
+ // 等待省份数据加载并启用
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).not.toHaveAttribute('disabled');
|
|
|
});
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
|
|
|
- // 等待城市数据加载
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在城市')).toBeInTheDocument();
|
|
|
- });
|
|
|
+ await user.click(provinceSelect);
|
|
|
|
|
|
- // 选择城市(北京市)
|
|
|
+ // 选择北京市 - 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const provinceHiddenSelect = screen.getByTestId('area-select-province').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (provinceHiddenSelect) {
|
|
|
+ await user.selectOptions(provinceHiddenSelect, '1');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 等待城市数据加载并启用
|
|
|
const citySelect = screen.getByTestId('area-select-city');
|
|
|
- await user.click(citySelect);
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
+ expect(citySelect).toBeInTheDocument();
|
|
|
+ expect(citySelect).not.toHaveAttribute('disabled');
|
|
|
+ }, { timeout: 2000 });
|
|
|
+
|
|
|
+ await user.click(citySelect);
|
|
|
|
|
|
- // 等待区县数据加载
|
|
|
+ // 选择北京市(城市)- 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const cityHiddenSelect = screen.getByTestId('area-select-city').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (cityHiddenSelect) {
|
|
|
+ await user.selectOptions(cityHiddenSelect, '3');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 等待区县数据加载并启用
|
|
|
+ const districtSelect = screen.getByTestId('area-select-district');
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在区县')).toBeInTheDocument();
|
|
|
- });
|
|
|
+ expect(districtSelect).toBeInTheDocument();
|
|
|
+ expect(districtSelect).not.toHaveAttribute('disabled');
|
|
|
+ }, { timeout: 2000 });
|
|
|
|
|
|
// 点击区县选择框
|
|
|
- const districtSelect = screen.getByTestId('area-select-district');
|
|
|
await user.click(districtSelect);
|
|
|
|
|
|
- // 选择东城区
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('东城区')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('东城区'));
|
|
|
+ // 选择东城区 - 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const districtHiddenSelect = screen.getByTestId('area-select-district').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (districtHiddenSelect) {
|
|
|
+ await user.selectOptions(districtHiddenSelect, '5');
|
|
|
+ }
|
|
|
|
|
|
// 验证onChange被调用
|
|
|
expect(handleChange).toHaveBeenCalledWith({
|
|
|
@@ -339,40 +355,54 @@ describe('AreaSelect 集成测试', () => {
|
|
|
</TestWrapper>
|
|
|
);
|
|
|
|
|
|
- // 等待省份数据加载
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在省份')).toBeInTheDocument();
|
|
|
- });
|
|
|
-
|
|
|
// 先选择省份(北京市)
|
|
|
const provinceSelect = screen.getByTestId('area-select-province');
|
|
|
- await user.click(provinceSelect);
|
|
|
+ // 等待省份数据加载并启用
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).toBeInTheDocument();
|
|
|
+ expect(provinceSelect).not.toHaveAttribute('disabled');
|
|
|
});
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
|
|
|
- // 等待城市数据加载并选择城市
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在城市')).toBeInTheDocument();
|
|
|
- });
|
|
|
+ await user.click(provinceSelect);
|
|
|
+
|
|
|
+ // 选择北京市 - 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const provinceHiddenSelect = screen.getByTestId('area-select-province').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (provinceHiddenSelect) {
|
|
|
+ await user.selectOptions(provinceHiddenSelect, '1');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 等待城市数据加载并启用
|
|
|
const citySelect = screen.getByTestId('area-select-city');
|
|
|
- await user.click(citySelect);
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('北京市')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('北京市'));
|
|
|
+ expect(citySelect).toBeInTheDocument();
|
|
|
+ expect(citySelect).not.toHaveAttribute('disabled');
|
|
|
+ }, { timeout: 2000 });
|
|
|
|
|
|
- // 等待区县数据加载并选择区县
|
|
|
- await waitFor(() => {
|
|
|
- expect(screen.getByText('选择所在区县')).toBeInTheDocument();
|
|
|
- });
|
|
|
+ await user.click(citySelect);
|
|
|
+
|
|
|
+ // 选择北京市(城市)- 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const cityHiddenSelect = screen.getByTestId('area-select-city').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (cityHiddenSelect) {
|
|
|
+ await user.selectOptions(cityHiddenSelect, '3');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 等待区县数据加载并启用
|
|
|
const districtSelect = screen.getByTestId('area-select-district');
|
|
|
- await user.click(districtSelect);
|
|
|
await waitFor(() => {
|
|
|
- expect(screen.getByText('东城区')).toBeInTheDocument();
|
|
|
- });
|
|
|
- await user.click(screen.getByText('东城区'));
|
|
|
+ expect(districtSelect).toBeInTheDocument();
|
|
|
+ expect(districtSelect).not.toHaveAttribute('disabled');
|
|
|
+ }, { timeout: 2000 });
|
|
|
+
|
|
|
+ await user.click(districtSelect);
|
|
|
+
|
|
|
+ // 选择东城区 - 尝试直接设置隐藏的select元素的值
|
|
|
+ // 查找隐藏的select元素
|
|
|
+ const districtHiddenSelect = screen.getByTestId('area-select-district').parentElement?.querySelector('select[aria-hidden="true"]');
|
|
|
+ if (districtHiddenSelect) {
|
|
|
+ await user.selectOptions(districtHiddenSelect, '5');
|
|
|
+ }
|
|
|
|
|
|
// 验证已经选择了完整的省市区
|
|
|
expect(handleChange).toHaveBeenLastCalledWith({
|