启动时按环回、局域网、公网顺序探测地址,换网络后会静默切到别处,排查 困难。改为代码内一个布尔开关选择环境,地址分别放在 dev_config.dart 与 prod_config.dart,不再探测;调试条改地址后直接重载,不再重新探测。 release 构建若仍是开发开关会启动即报错,避免线上包连开发机。
37 lines
1.1 KiB
Dart
37 lines
1.1 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:fruitshorts/core/config/app_config.dart';
|
|
import 'package:fruitshorts/core/data/models/drama.dart';
|
|
import 'package:fruitshorts/core/data/services/video_player_port.dart';
|
|
|
|
Episode _episode(String videoUrl) => Episode(
|
|
id: '1',
|
|
number: 1,
|
|
title: '第 1 集',
|
|
isFree: true,
|
|
videoUrl: videoUrl,
|
|
);
|
|
|
|
void main() {
|
|
test('should_prefix_service_base_when_play_url_is_relative', () {
|
|
final uri = VideoPlayerPort.resolveUri(
|
|
_episode('/files/episode/202610/clip.mp4'),
|
|
);
|
|
|
|
expect(uri.isAbsolute, isTrue);
|
|
// Uri.parse().toString() 会把 host 规范成小写,而开发地址可能带大写
|
|
// (Bonjour 名字),比较时统一小写,否则会依赖运行平台。
|
|
expect(
|
|
uri.toString().toLowerCase(),
|
|
'${AppConfig.apiBaseUrl}/files/episode/202610/clip.mp4'.toLowerCase(),
|
|
);
|
|
});
|
|
|
|
test('should_keep_url_untouched_when_play_url_is_absolute', () {
|
|
final uri = VideoPlayerPort.resolveUri(
|
|
_episode('https://cdn.example.test/clip.mp4'),
|
|
);
|
|
|
|
expect(uri.toString(), 'https://cdn.example.test/clip.mp4');
|
|
});
|
|
}
|