测试
运行测试
运行完整 Rust 测试套件:测试组织
单元测试
大多数单元测试通过#[cfg(test)] 和被测模块放在一起。
常见入口:
crates/memorose-core/src/engine/tests.rsgraph/、llm/、raft/、worker.rs以及 dashboard handlers 里的模块内#[cfg(test)]
集成测试
当前集成测试位于:crates/memorose-core/tests/integration.rs
常见模式
异步测试
I/O 较重的测试通常使用#[tokio::test]。
临时目录
需要隔离存储状态的测试通常会把引擎指向临时目录,而不是复用仓库目录。模拟外部 HTTP 调用
涉及 HTTP 的测试会使用wiremock,例如:
crates/memorose-server/src/shard_manager.rscrates/memorose-core/src/llm/openai_tests.rscrates/memorose-core/src/llm/gemini_tests.rs
LLM 相关测试
当前AppConfig 没有一个会被运行时 loader 消费的 [development].use_mock_llm 开关。实际测试里通常是在 Rust 测试代码内部显式构造 mock client。
编写新测试
- 单元测试尽量贴近被测代码。
- 跨模块集成测试放到
crates/memorose-core/tests/。 - 使用描述性名称,例如
test_hybrid_search_with_agent_filter。 - 优先用临时目录,避免共享磁盘状态。
- 除非你是在刻意验证 provider 集成,否则避免真实外部调用。

