# @cypress/sinon-chai 中文文档

规范地址：https://npmcn.com/package/%40cypress/sinon-chai/

版本：2\.9\.1
npm 元数据更新时间：2022-04-05T02:27:29.314Z
中文译文更新时间：2026-11-11T07:23:42.387Z
软件包许可：\(BSD-2-Clause OR WTFPL\)

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cypress/sinon-chai
原文对照：https://npmcn.com/package/%40cypress/sinon-chai/?lang=original
项目主页：https://github.com/cypress-io/sinon-chai#readme
源码仓库：https://github.com/cypress-io/sinon-chai

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：18.6 kB，4 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：0 个
- 首次发布：2017-06-26T13:51:54.619Z
- 最新版本发布：2020-12-30T08:31:36.999Z
- 近 30 天下载量：9587（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

将Chai扩展为 Sinon.JS 嘲笑框架,与 Cypress.io 兼容

## 安装

```sh
npm install @cypress/sinon-chai
```

也可以使用：`pnpm add @cypress/sinon-chai`、`yarn add @cypress/sinon-chai`、`bun add @cypress/sinon-chai`

## README

# 锡农. JS Chai 请求

[![renovate-app badge](https://img.shields.io/badge/renovate-app-blue.svg)](https://renovateapp.com/) [![semantic-release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg) ](https://github.com/semantic-release/semantic-release)[![CircleCI](https://circleci.com/gh/cypress-io/sinon-chai.svg?style=svg)](https://circleci.com/gh/cypress-io/sinon-chai)

**希农 柴仔 柴仔 柴仔** 提供一套自定义断言,用于使用 [西农. 联合来文](http://sinonjs.org/) 间谍、间谍和嘲弄框架 [柴仔](http://chaijs.com/) 主张图书馆。 你用西农的强大工具 得到柴的所有好处 联合来文.

取而代之用西农. 联合来文称:

```javascript
sinon.assertCalledWith(mySpy, "foo");
```

或尴尬地试图用柴的 `should` 或者说 `expect` 间谍属性的界面 :

```javascript
mySpy.calledWith("foo").should.be.ok;
expect(mySpy.calledWith("foo")).to.be.ok;
```

你可以说

```javascript
mySpy.should.have.been.calledWith("foo");
expect(mySpy).to.have.been.calledWith("foo");
```

## 请求

所有你最喜欢的Sinon.JS的说法都进入了Sinon-Chai。 我们展示 `should` 这里的语法 `expect` 也可提供等同数据.

| Sinon.JS财产/方法 | Sinon-Chai 主张 |
| --- | --- |
| 调用 | 间谍。 。 |
| 调用 | 间谍 |
| 名为 Once | 间谍,应该... 已经.. |
| 两次 | 间谍,应该... 已经... 已经.. |
| 名为Thrike | 间谍,应该... 已经.. |
| 调用前 | 间谍1号,应该. been before (spy2) |
| 后调用 | 间谍1号,应该的,应该的,应该的 |
| 名为即时 | 间谍,应该的,应该的,应该的,应该的 |
| 之后立即调用 | 间谍,应该的,应该的,应该的,应该的,应该的 |
| 名为新 | 间谍,应该... 应该.. |
| 总是用新调用 | 一直以来 一直以来 一直叫着"新" |
| 调用 | 间谍,应该... 已经.. |
| 总是唤起 | 间谍,应该的,永远的,永远的,永远的 |
| 调用 | 间谍,应该... 已经.. |
| 总是用 | 间谍,应该一直... 一直.. |
| 调用 准确 | 间谍,应该... 已经.. |
| 总是叫 准确 | 间谍,应该的,永远的,永远的,永远的 |
| 名为 Match | 间谍,应该的,应该的,应该的 |
| 总是用匹配调用 | 间谍,应该永远... 一直.. |
| 已返回 | 已返回(返回Val) |
| 总是回归 | 总是有 返回(返回) |
| 丢弃 | 间谍。应该。 已经。 |
| 永远 线索 | 间谍,应该. 总是. 推 (错误的ObjOror Error Type String Or nothing) (错误的ObjOror Error Type String Or nothing) (错误的ObjOrror Error Type String Or nothing) (错误的ObjOrror or or or nothing (错误的ObjOrreor or or or or or or or rerror Type String Or nothing) (错误的Objjor,应该 |

关于每项主张行为的更多信息,见: [相应的间谍方法的文档](http://sinonjs.org/docs/#spies-api)当然,这些工作不仅针对间谍,而且针对 个别间谍的电话, 棍子,和嘲弄.

请注意,你可以否定任何断言 蔡的 `.not`. E. g. 用于 `notCalled` 使用情况 `spy.should.have.not.been.called`。 。 。 .

对于 `assert` 界面不需要此库。 您可以安装 [Sinon.JS的说法](http://sinonjs.org/docs/#assertions) 进入柴家 `assert` 对象为 `expose`数字 :

```javascript
var chai = require("chai");
var sinon = require("sinon");

sinon.assert.expose(chai.assert, { prefix: "" });
```

## 实例

使用柴的 `should`数字 :

```javascript
"use strict";
var chai = require("chai");
var sinon = require("sinon");
var sinonChai = require("sinon-chai");
chai.should();
chai.use(sinonChai);

function hello(name, cb) {
    cb("hello " + name);
}

describe("hello", function () {
    it("should call callback with correct greeting", function () {
        var cb = sinon.spy();

        hello("foo", cb);

        cb.should.have.been.calledWith("hello foo");
    });
});
```

使用柴的 `expect`数字 :

```javascript
"use strict";
var chai = require("chai");
var sinon = require("sinon");
var sinonChai = require("sinon-chai");
var expect = chai.expect;
chai.use(sinonChai);

function hello(name, cb) {
    cb("hello " + name);
}

describe("hello", function () {
    it("should call callback with correct greeting", function () {
        var cb = sinon.spy();

        hello("foo", cb);

        expect(cb).to.have.been.calledWith("hello foo");
    });
});
```

## 安装和使用

### 节点

做一个 `npm install sinon-chai` 起来跑步 然后说:

```javascript
var chai = require("chai");
var sinonChai = require("sinon-chai");

chai.use(sinonChai);
```

您当然可以将这个代码放入普通的测试固定文件; 例如使用 [摩诃迦叶](https://mochajs.org/),参见 [希农-蔡测试本身](https://github.com/domenic/sinon-chai/tree/master/test/)。 。 。 .

### AMD (英语)

希农 Chai 支持用作一种 [AMD (英语)](https://github.com/amdjs/amdjs-api/wiki/AMD) 模块,以匿名方式注册(和Chai一样)。 所以,假设你 已配置您的加载器, 将 Cai 和 Sinon- Chai 文件映射到相应的模块ID `"chai"` 财务报告和审定财务报表 `"sinon-chai"`,可以按以下方式使用:

```javascript
define(function (require, exports, module) {
    var chai = require("chai");
    var sinonChai = require("sinon-chai");

    chai.use(sinonChai);
});
```

### `<script>` 标签

若您直接将 Sinon – Chai 包含在其中,则 `<script>` 标记,在Chai本身之后,它会自动插入 准备使用 注意您会想要获得西农的最新浏览器构建. 联合来文:

```html
<script src="chai.js"></script>
<script src="sinon-chai.js"></script>
<script src="sinon.js"></script>
```

### 铁路上的Ruby

感谢 [柴门警队](https://github.com/cymen)现在 [鲁比宝石](https://github.com/cymen/sinon-chai-rails) 将它与铁路资产管道整合在一起的锡农-猜!

## 常见问题

### @cypress/sinon-chai 是什么？

将Chai扩展为 Sinon\.JS 嘲笑框架,与 Cypress\.io 兼容

### 如何安装 @cypress/sinon-chai？

在项目目录运行 npm install @cypress/sinon-chai，或使用 pnpm add / yarn add / bun add。

### @cypress/sinon-chai 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/cypress\_\_sinon-chai 是否存在。

### @cypress/sinon-chai 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @cypress/sinon-chai 可以商用吗？

@cypress/sinon-chai 使用 \(BSD-2-Clause OR WTFPL\) 许可。可在 BSD-2-Clause、WTFPL 中任选其一遵守。选择 BSD-2-Clause 时，宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @cypress/sinon-chai 的下载量有多少？

根据 npm 官方下载统计，@cypress/sinon-chai 在 2026/10/11 – 2026/11/09 这 30 天内被下载 9,587 次，日均约 320 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @cypress/sinon-chai 还在维护吗？

最新版本 2\.9\.1 发布于 2020/12/30（5 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2017/06/26。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

