Because toHaveBeenCalledExactlyOnceWith includes "exactly", this suggests that toHaveBeenCalledOnce actually checks for at least one call. But the documentation (and implementation) explain that both check for exactly one call. This naming discrepancy is misleading at best. I don't have an opinion about which is preferrable.