$mol
搜索
⌘ K
文档
演练场
对比
生态系统
关于
ZH
测试
Getting Started
介绍
心智模型
快速上手
从 TypeScript 到 view.tree
项目结构
工具链
Essentials
安装
视图
状态与响应式
路由
渲染
测试
部署
故障排查
Data
数据获取
数据模式
Giper Baza
More
展示
来自 React、Vue 和 Svelte
食谱
Advanced
插件
模块元数据
离线
幽灵视图
About
常见问题
团队
发布
API
$mol_button_major
$mol_button_minor
$mol_string
$mol_number
$mol_text
$mol_paragraph
$mol_list
$mol_row
$mol_link
$mol_check
$mol_switch
$mol_select
$mol_scroll
$mol_page
$mol_pick
测试
$mol 的视图是它自身状态的函数,这也改变了测试的样子。一个用户场景就写成对视图自己方法的调用:设置草稿、执行动作、读取用户会看到的东西。
1
app
.draft
(
'Milk'
)
2
app
.add
(
)
3
$mol_assert_equal
(
app
.item_title
(
0
)
,
'Milk'
)
没有选择器,没有浏览器,没有 Playwright 或 Cypress,也不用等待任何东西。同一个文件还给你:
速度。
测试在 Node 里以毫秒计地跑完;一千个大约一分钟。
node
my
/hello/
-
/
node
.
test
.
js
跑的是某个模块的那些测试。
零配置。
组件旁边的
hello
.
test
.
ts
会被构建器捡起来,编译进
-
/
node
.
test
.
js
。用
mam_build
做持续集成时会运行它,测试失败就让构建失败。
通过上下文替换服务。
每个测试都拿到自己的
$
,组件经由
this
.
$
.
X
取到的一切,都可以通过往那个
$
上赋一个测试替身来换掉。这正是要写
this
.
$
.
$mol_fetch
而不是
$mol_fetch
的理由:前者可替换,后者不可。
被模拟的时间。
经由上下文创建的定时器不会自己走动;
$mol_after_mock_warp
(
)
会把排队的东西跑掉。
需要时有真实的 DOM。
Node 的打包产物自带 jsdom,所以
dom_node
(
)
和
querySelectorAll
在同一个测试文件里就能用。
用视图方法走一遍场景
拿
食谱
里的待办列表来说:一个
draft
?
字符串、一个
items
列表、一个
add
动作和一个
delete
动作。它的测试住在
my
/
todo
/
todo
.
test
.
ts
:
1
namespace
$
{
2
$mol_test
(
{
3
4
'add an item and delete it'
(
$
)
{
5
const
app
=
$my_todo
.make
(
{
$
}
)
6
7
app
.draft
(
'Milk'
)
8
app
.add
(
)
9
$mol_assert_equal
(
app
.items
(
)
.
length
,
1
)
10
$mol_assert_equal
(
app
.item_title
(
0
)
,
'Milk'
)
11
$mol_assert_equal
(
app
.draft
(
)
,
''
)
12
13
app
.delete
(
0
)
14
$mol_assert_like
(
app
.item_rows
(
)
,
[
]
)
15
}
,
16
17
'blank draft adds nothing'
(
$
)
{
18
const
app
=
$my_todo
.make
(
{
$
}
)
19
20
app
.draft
(
' '
)
21
app
.add
(
)
22
$mol_assert_like
(
app
.items
(
)
,
[
]
)
23
}
,
24
25
}
)
26
}
有几点值得注意:
在 GitHub 上编辑此页
这有帮助吗?
是
否
上一页
渲染
下一页
部署
本页内容
用视图方法走一遍场景
模拟一个服务
时间
穿过 DOM
Node 测试覆盖不到什么
实用提示
下一步
Type to search the documentation.