#1957·testify

mock: 在 AssertNumberOfCalls 中避免复制呼叫历史

作者: jisung-02创建于 2026年9月5日更新于 2026年9月5日

AssertNumberOfCalls 目前调用 m.calls(), 该方法在循环之前复制了整个调用历史,然后计算具有匹配方法名的条目数。该方法在整个循环中持有 m.mutex, 循环只读取 call.Method。原先的复制是有用的。在 b11fb16 中, calls() 获取了锁,复制了切片,并在调用者迭代它之前释放了锁。后来, bd79c01 将锁定移入 AssertNumberOfCalls 并移除了 calls() 内的锁,但保留了复制。

内容来源: stretchr/testify