1、参考:在 重构:改善既有代码的设计 (第2版) 中,基于 Mocha 运行测试用例 。
2、Mocha 允许您使用任何您想要的断言库。 在上面的例子中,我们使用了 Node.js 的内置断言模块。计划切换为使用断言库 Chai。
3、参考:https://mochajs.org/#assertions 。断言库 Chai支持 expect()、assert() 和 should 风格的断言。如图1

4、执行命令:npm install chai ,安装 Chai。如图2

Plaintext
PS E:\wwwroot\refactoring> npm install chai
added 8 packages, and audited 86 packages in 11s
20 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
5、编辑测试文件 test/province.js
JavaScript
import {Province} from '../4/modules/province.js';
import chai from 'chai';
function sampleProvinceData() {
return {
name: "Asia",
producers: [{name: "Byzantium", cost: 10, production: 9}, {
name: "Attalia",
cost: 12,
production: 10
}, {name: "Sinope", cost: 10, production: 6},],
demand: 30,
price: 20
};
}
var expect = chai.expect;
describe('province', function() {
it('shortfall', function() {
const asia = new Province(sampleProvinceData());
expect(asia.shortfall).equal(5);
});
it('profit', function() {
const asia = new Province(sampleProvinceData());
expect(asia.profit).equal(230);
});
});
6、运行测试,测试通过。如图3

Plaintext
PS E:\wwwroot\refactoring> npm test
> test
> mocha
province
√ shortfall
√ profit
2 passing (13ms)
需要长期技术维护或远程问题排查?
我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。
如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:
- ✅ PHP / Laravel / Yii2 老项目无人维护
- ✅ Go / Gin 后端接口需要排查或优化
- ✅ WordPress 网站访问慢、报错或插件冲突
- ✅ Nginx / MySQL / Redis / Linux 服务器异常
- ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
- ✅ 需要长期远程技术支持或兼职维护
更多介绍请查看:关于我 & 合作
微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan
