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 规范成小写,而 devHostBaseUrl 里的 // Bonjour 名字带大写(jiangdeMacBook-Air.local)—— 比较时统一小写, // 否则会依赖运行平台(flutter test 里 defaultTargetPlatform 默认是 android) 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'); }); }