javascript - JavaScript:Jest 无法识别静态函数
问题描述
我正在关注一个使用 jest 测试 javascript 的教程。讲师在一个名为genesis()
的类上创建了一个静态函数Block
,它对他来说工作得很好,但是当我尝试这样做时,我得到了TypeError: block.genesis is not a function
. 如果我删除static
关键字,它会识别函数并且测试通过。
这是课程:
const { GENESIS_DATA } = require('./config');
class Block {
constructor({ timestamp, lastHash, hash, data }) {
this.timestamp = timestamp;
this.lastHash = lastHash;
this.hash = hash;
this.data = data;
}
static genesis() {
return new Block(GENESIS_DATA);
}
}
module.exports = Block;
和测试:
const Block = require('./block');
const { GENESIS_DATA } = require('./config');
describe('Block', () => {
const timestamp = 'a-date';
const lastHash = 'a-hash';
const hash = 'another-hash';
const data = ['blockchain', 'data'];
const block = new Block({ timestamp, lastHash, hash, data });
describe('genesis()', () => {
const genesisBlock = block.genesis();
it('returns a block instance', () => {
expect(genesisBlock instanceof Block).toBe(true);
});
it('returns the genesis data', () => {
expect(genesisBlock).toEqual(GENESIS_DATA);
});
});
});
解决方案
该genesis
方法是类的一部分,而不是实例。你想打电话Block.genesis()
而不是block.genesis()
推荐阅读
- gimp - 更改文本图层的对比度可用作预览,但在确认后无效
- apache-kafka - (功能性)Spring Cloud Stream 自定义分区键实现,用于将消息列表发布到单个 Kafka 主题
- mpeg-dash - dash.js 无法一个接一个地播放多个视频
- c# - C# 表单使用 [i] 引用图像
- c - 如何更好地实现诸如等待控制我创建的进程运行顺序的功能?
- rust - 确定两个路径是否在同一个文件系统上
- c# - Unity LineRenderer Gradient 不适用于自定义颜色
- eloquent - 从 2 个深度多对多关系中获取一个集合结果
- python - 如果选择!=“y”或选择!=“是”,布尔“或”运算符不会返回正确的结果:
- asp.net-core - 无法在 POST 调用中接收来自 Route 和 Body 的值