面试题答案
一键面试创建Mock响应数据
- 使用Dart的Map和List来构建JSON结构:
在Flutter中,可以利用Dart的
Map
和List
数据结构来构建与实际JSON响应类似的结构。假设实际的JSON响应如下:
{
"user_info": {
"name": "John Doe",
"age": 30
},
"order_list": [
{
"order_id": 1,
"order_amount": 100.0,
"order_status": "completed"
},
{
"order_id": 2,
"order_amount": 200.0,
"order_status": "pending"
}
]
}
可以通过以下代码创建Mock响应数据:
final mockResponse = {
"user_info": {
"name": "Mock Name",
"age": 25
},
"order_list": [
{
"order_id": 101,
"order_amount": 150.0,
"order_status": "completed"
},
{
"order_id": 102,
"order_amount": 250.0,
"order_status": "pending"
}
]
};
- 使用
json.encode
将数据转换为JSON字符串(如果测试需要): 如果在测试中需要将Mock数据以JSON字符串的形式传递,例如模拟网络响应体,可以使用json.encode
方法。
import 'dart:convert';
final mockResponseJsonString = json.encode(mockResponse);
在测试中验证处理复杂响应的业务逻辑
- 假设业务逻辑在一个函数中:
假设我们有一个函数
processResponse
来处理上述响应数据。
void processResponse(Map<String, dynamic> response) {
final userInfo = response['user_info'];
print('User Name: ${userInfo['name']}, Age: ${userInfo['age']}');
final orderList = response['order_list'] as List;
for (var order in orderList) {
print('Order ID: ${order['order_id']}, Amount: ${order['order_amount']}, Status: ${order['order_status']}');
}
}
- 编写测试用例:
使用Flutter的测试框架
flutter_test
来编写测试用例。
import 'package:flutter_test/flutter_test.dart';
void main() {
test('Test processResponse with mock response', () {
processResponse(mockResponse);
// 这里可以添加更具体的断言,例如验证打印的信息是否符合预期
// 例如,可以使用`expect`来验证`userInfo`中的`name`是否为预期值
expect(mockResponse['user_info']['name'], 'Mock Name');
});
}
在这个测试用例中,我们调用processResponse
函数并传入Mock响应数据,然后通过expect
来验证业务逻辑对响应数据的处理是否符合预期。如果需要更复杂的验证,可以根据实际业务逻辑在expect
中添加更多的断言条件。