"""EPUBSplitter 测试.""" import pytest ebooklib = pytest.importorskip("ebooklib", reason="ebooklib 未安装") class TestEPUBSplitter: """EPUBSplitter 测试(需 ebooklib).""" def test_split_simple_epub(self, tmp_path): """用 ebooklib 创建一个简单 EPUB 并测试分块.""" from src.core.splitters.epub import EPUBSplitter from ebooklib import epub epub_path = tmp_path / "test.epub" book = epub.EpubBook() book.set_identifier("test123") book.set_title("测试书名") book.set_language("zh") chapter = epub.EpubHtml( title="第一章", file_name="chap01.xhtml", lang="zh", ) chapter.content = "

第一章

这是EPUB电子书的内容。

第二段文字在这里。

" book.add_item(chapter) book.toc = [epub.Link("chap01.xhtml", "第一章", "chap01")] book.add_item(epub.EpubNcx()) book.add_item(epub.EpubNav()) book.spine = ["nav", chapter] epub.write_epub(str(epub_path), book) s = EPUBSplitter(max_size=500) chunks = s.split(str(epub_path), source_file="test.epub") assert len(chunks) >= 1 all_text = "".join(c["content"] for c in chunks) assert "第一章" in all_text assert "EPUB电子书" in all_text assert "第二段文字" in all_text def test_epub_has_split_method(self): """EPUBSplitter 遵循 Splitter Protocol.""" from src.core.splitters.epub import EPUBSplitter s = EPUBSplitter() assert hasattr(s, "split") def test_epub_missing_dependency_message(self): """EPUBSplitter.split() 在未安装 ebooklib 时应给出明确提示.""" from src.core.splitters.epub import EPUBSplitter s = EPUBSplitter() # 验证 split 方法存在且可调用(有明确的 import error 信息) assert callable(s.split)