joke有什么用法吗

发布网友 发布时间:2022-04-21 16:02

我来回答

3个回答

懂视网 时间:2022-04-22 18:02

本篇文章给大家带来的内容是关于Jest是什么?Jest相关知识的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1 什么是 Jest?

Jest

Jest是 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。并且它对同样是 的开源前端框架 React 的测试十分友好。

2 安装Jest

2.1 初始化package.json

在shell中输入以下命令,初始化前端项目并生成package.json:

npm init -y

2.2 安装Jest及相关依赖

在shell中输入以下命令,安装测试所需要的依赖:

npm install -D jest babel-jest babel-core babel-preset-env regenerator-runtime

babel-jest、 babel-core、 regenerator-runtime、babel-preset-env这几个依赖是为了让我们可以使用ES6的语法特性进行单元测试,ES6提供的 import 来导入模块的方式,Jest本身是不支持的。

2.3 添加.babelrc文件

在项目的根目录下添加.babelrc文件,并在文件复制如下内容:

{ 
 "presets": ["env"]
}

2.4 修改package.json中的test脚本

打开package.json文件,将script下的test的值修改为jest:

"scripts": {
 "test": "jest"
 }

3. 编写你的第一个Jest测试

创建src和test目录及相关文件

在项目根目录下创建src目录,并在src目录下添加functions.js文件

在项目根目录下创建test目录,并在test目录下创建functions.test.js文件

Jest会自动找到项目中所有使用.spec.js或.test.js文件命名的测试文件并执行,通常我们在编写测试文件时遵循的命名规范:测试文件的文件名 = 被测试模块名 + .test.js,例如被测试模块为functions.js,那么对应的测试文件命名为functions.test.js。

在src/functions.js中创建被测试的模块

export default {
 sum(a, b) {
 return a + b;
 }
}

在test/functions.test.js文件中创建测试用例

import functions from '../src/functions';
test('sum(2 + 2) 等于 4', () => {
 expect(functions.sum(2, 2)).toBe(4);
})

运行npm run test, Jest会在shell中打印出以下消息:

PASS test/functions.test.js
 √ sum(2 + 2) 等于 4 (7ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 4.8s

4.常用的几个Jest断言

上面测试用例中的expect(functions.sum(2, 2)).toBe(4)为一句断言,Jest为我们提供了expect函数用来包装被测试的方法并返回一个对象,该对象中包含一系列的匹配器来让我们更方便的进行断言,上面的toBe函数即为一个匹配器。我们来介绍几种常用的Jest断言,其中会涉及多个匹配器。

.not

//functions.test.js
import functions from '../src/functions'
test('sum(2, 2) 不等于 5', () => {
 expect(functions.sum(2, 2)).not.toBe(5);
})

.not修饰符允许你测试结果不等于某个值的情况,这和英语的语法几乎完全一样,很好理解。

.toEqual()

// functions.js
export default {
 getAuthor() {
 return {
  name: 'LITANGHUI', 
  age: 24,
 }
 }
}
// functions.test.js
import functions from '../src/functions';
test('getAuthor()返回的对象深度相等', () => {
 expect(functions.getAuthor()).toEqual(functions.getAuthor());
})
test('getAuthor()返回的对象内存地址不同', () => {
 expect(functions.getAuthor()).not.toBe(functions.getAuthor());
})

.toEqual匹配器会递归的检查对象所有属性和属性值是否相等,所以如果要进行应用类型的比较时,请使用.toEqual匹配器而不是.toBe。

.toHaveLength

// functions.js
export default {
 getIntArray(num) {
 if (!Number.isInteger(num)) {
  throw Error('"getIntArray"只接受整数类型的参数');
 }
 let result = []; 
 for (let i = 0, len = num; i < len; i++) {
 result.push(i);
 } 
 return result;
 }
}
// functions.test.js
import functions from '../src/functions';
test('getIntArray(3)返回的数组长度应该为3', () => {
 expect(functions.getIntArray(3)).toHaveLength(3);
})

.toHaveLength可以很方便的用来测试字符串和数组类型的长度是否满足预期。

.toThrow

// functions.test.js
import functions from '../src/functions';
test('getIntArray(3.3)应该抛出错误', () => {
 function getIntArrayWrapFn() {
 functions.getIntArray(3.3);
 }
 expect(getIntArrayWrapFn).toThrow('"getIntArray"只接受整数类型的参数');
})

.toThorw可能够让我们测试被测试方法是否按照预期抛出异常,但是在使用时需要注意的是:我们必须使用一个函数将将被测试的函数做一个包装,正如上面getIntArrayWrapFn所做的那样,否则会因为函数抛出导致该断言失败。

.toMatch

// functions.test.js
import functions from '../src/functions';
test('getAuthor().name应该包含"li"这个姓氏', () => {
 expect(functions.getAuthor().name).toMatch(/li/i);
})

.toMatch传入一个正则表达式,它允许我们用来进行字符串类型的正则匹配。

5 测试异步函数

安装axios
这里我们使用最常用的http请求库axios来进行请求处理

npm install axios

编写http请求函数
我们将请求http://jsonplaceholder.typicode.com/users/1,这是由JSONPlaceholder提供的mock请求地址

image_1cm9b6gjprkq1ij11o48a4b1as01j.png


JSONPlaceholder

// functions.js
import axios from 'axios';
export default {
 fetchUser() {
 return axios.get('http://jsonplaceholder.typicode.com/users/1')
 .then(res => res.data)
 .catch(error => console.log(error));
 }
}
// functions.test.js
import functions from '../src/functions';
test('fetchUser() 可以请求到一个含有name属性值为Leanne Graham的对象', () => {
 expect.assertions(1); 
 return functions.fetchUser()
 .then(data => {
 expect(data.name).toBe('Leanne Graham');
 });
})

上面我们调用了expect.assertions(1),它能确保在异步的测试用例中,有一个断言会在回调函数中被执行。这在进行异步代码的测试中十分有效。

使用async和await精简异步代码

test('fetchUser() 可以请求到一个用户名字为Leanne Graham', async () => {
 expect.assertions(1);
 const data = await functions.fetchUser();
 expect(data.name).toBe('Leanne Graham')
})

当然我们既然安装了Babel,为何不使用async和await的语法来精简我们的异步测试代码呢? 但是别忘记都需要调用expect.assertions方法。

热心网友 时间:2022-04-22 15:10

joke
英[dʒəʊk]
美[dʒoʊk]
n.
笑话,玩笑;
笑柄,笑料;
vt.
开玩笑;
戏弄;
闹着玩;
说着玩;
[例句]His
attempt
to
turn
a
nasty
episode
into
a
joke
他想把一段很不愉快的插曲变成一则笑话的尝试
[其他]
第三人称单数:jokes
复数:jokes
现在分词:joking
过去式:joked过去分词:joked

热心网友 时间:2022-04-22 16:28

joke
[dVEuk]
n.
笑话, 玩笑
v.
(和...)开玩笑

joke

Joke: as a noun is a short story something to make people laugh or to make people happy it is a joke.
For example: Can you tell any good joke?
Joke is also a verb. You can joke a person or to joke with somebody which means to play with fun and make them happy.
For example: Please, don't joke with me exactly when you are coming home.
笑话

joke
joke
AHD:[j½k]
D.J.[d9ouk]
K.K.[d9ok]
n.(名词)
Something said or done to evoke laughter or amusement, especially an amusing story with a punch line.
笑话:为引人发笑或逗乐而说的话或做的事,尤指有一句妙语的有趣故事
A mischievous trick; a prank.
恶作剧:淘气的把戏;恶作剧
An amusing or ludicrous incident or situation.
可笑的事:有趣的或滑稽可笑的事情或局面
Informal
【非正式用语】
Something not to be taken seriously; a triviality:
小事,儿戏:无需认真对待的事;琐碎小事:
The accident was no joke.
这场事故可不是儿戏
An object of amusement or laughter; a laughingstock:
笑柄,笑料:令人感到有趣或令人发笑的对象;笑柄:
His preference for loud ties was the joke of the office.
他对于俗艳领带的喜爱是办公室里的笑柄
v.(动词)
joked, jok.ing, jokes
v.intr.(不及物动词)
To tell or play jokes; jest.
开玩笑,嘲笑:讲笑话或开玩笑;说俏皮话
To speak in fun; be facetious.
闹着玩地说话;爱开玩笑
v.tr.(及物动词)
To make fun of; tease.
取笑;嘲笑

Latin iocus * see yek-
拉丁语 iocus *参见 yek-

jok“ingly
adv.(副词)

joke, jest, witticism, quip, sally, crack, wisecrack, gag
These nouns refer to something that is said or done in order to evoke laughter or amusement.
这些名词表示为了引人发笑或逗乐而说的话或做的事。
Joke especially denotes an amusing story with a punch line at the end:
Joke 专门指结尾处有一句妙语的有趣故事:
told jokes at the beginning of the show.
在节目开始的时候讲笑话。
Jest suggests frolicsome humor:
Jest 表示一种闹着玩的幽默:
All jests aside, we're in big trouble. A witticism is a witty, usually cleverly phrased remark:
玩笑归玩笑,我们遇到了大麻烦。 witticism 指一句风趣的,通常措辞巧妙的语句:
a speech that was full of witticisms. A quip is a clever, pointed, often sarcastic remark:
充满诙谐语句的演说。 quip 指一句机智的、一针见血的、常常是讽刺性的语句:
a President who responded to the tough questions with quips.
一位用讽刺性妙语回答棘手问题的总统。
Sally denotes a sudden quick witticism:
Sally 指突然急中生智想出的一句俏皮话:
In a sally at the end of the debate the candidate elicited much laughter from the audience.
在辩论结束时候加入的一句俏皮话引起了听众的大笑。
Crack and wisecrack refer less formally to flippant or sarcastic retorts:
Crack 和wisecrack 要非正式一些,它们表示轻率无礼的或讽刺挖苦的反驳:
He made a crack about my driving ability.
他对我的驾驶技术说了一句挖苦的话。
Don't give me any more wisecracks.
别再挖苦我了。
Gag is principally applicable to a broadly comic remark or to comic by-play in a theatrical routine:
Gag 主要适用于指插科打诨的话或戏剧中老套的噱头:
one of the most memorable gags in the history of vaudeville.
轻歌舞剧历史上最令人难忘的噱头之一

It is hard to imagine the English language without the word joke , but joke is only first recorded in 1670. Since joke was originally considered a slang or informal usage, it was not suitable to all contexts. The change in status of joke from then to now provides us with an excellent example of how usage changes. [x]Joke has a decent enough heritage at any rate, coming from Latin iocus, “jest, sport, laughingstock, trifle.” Iocus in turn can be traced back to the Indo-European root yek-, meaning “to speak,” from which also comes the Umbrian word iuka, “prayers,” and the Welsh word iaith, “speech.”
我们很难想象英语中如果没有joke 这个词会怎样, 但是joke 在1670年才首次有文字记载。 因为joke 起初被认为是俚语或非正式用语, 以前它并不是在所有的文章中都适用的。从那时到现在joke 地位上的变化给我们提供了一个关于语言用法如何变化的极好的例子。 不管怎样joke 的词源算得上很体面, 它来自于拉丁语中iocus 一词, 表示“玩笑,游戏,笑柄,琐事”。Iocus 反过来又可追溯到印欧语系中的词根 yek- 表示“说话”, 从这个词根还派生出翁布里亚语中iuka 一词,即“祈祷”, 以及威尔士语中iaith 一词,即“讲话,演说”

joke
[dVEJk]
n.
笑话;玩笑
Our teacher told us a joke today.
我们老师今天给我们讲了一个笑话。
We all played a joke on him.
我们大家开了他一个玩笑。
A very funny joke may relieve you of a whole day's fatigue.
一则非常滑稽的笑话可以使你消除一天的疲劳。
笑柄;笑料;取笑的对象

joke
vi.
joked, joking
开玩笑
I didn't mean that seriously — I was only joking.
我不是那个意思,我不过是开个玩笑。
You mustn't joke with him about religious belief.
有关宗教信仰的事你决不可和他开玩笑。
He is only joking.
他只是开玩笑罢了。

joke
[dVEuk]
n.
笑话
笑料, 笑柄
可笑之事(物); 鸡毛蒜皮; 空话
过于容易的事
She said this in a joke.
她说这话是开玩笑的。
The test was a joke to the whole class.
全班都认为那次考试题出得太容易了。

joke
[dVEuk]
vi.
说笑话, 开玩笑
joke with sb.
与某人开玩笑
He is only joking.
他只不过是开玩笑。
joke
[dVEuk]
vt.
拿...开玩笑; 取笑; 愚弄, 戏弄
以说笑话取得(赏赐等)

jokebook
n.
笑话集

A joke never gains an enemy but often loses a friend.
[谚] 戏谑永远不能化敌为友, 反而常常失去朋友。
be but a joke
只不过是开玩笑, 完全是句空话
beyond a joke
(通常和动词be, go连用)超出开玩笑的限度
blue jokes
下流的笑话
broad jokes
下流的笑话
crack a joke
说笑话
cut a joke
说笑话
make a joke
说笑话
have a joke
说笑话, 开玩笑
in joke
闹着玩地
no joke
不是闹着玩的, 不容易的事
play a joke on sb.
开某人玩笑
practical joke
恶作剧
put a joke on sb.
[美]开某人玩笑
stock joke
陈腐的笑话
take a joke
经得起被人开玩笑

joke jest
都含“玩笑”、“笑话”的意思。
joke 指“任何能使人发笑取乐的话、小故事或恶作剧等”, 如:
He loves a joke, a good joke.
他喜欢笑话, 好笑话。
jest 是正式用语, 主要指“开玩笑或戏弄的话语”, 如:
They made a jest of his ignorance.
他们笑话他无知。

joke
来自拉丁语的 jocus. 源自罗马神国之王 Jove最喜欢开玩笑

joke
banterjestquiptease

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com