惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
T
Tenable Blog
Project Zero
Project Zero
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
S
Schneier on Security
Scott Helme
Scott Helme
S
Securelist
Know Your Adversary
Know Your Adversary
Vercel News
Vercel News
IT之家
IT之家
V
V2EX
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
K
Kaspersky official blog
博客园_首页
T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Spread Privacy
Spread Privacy
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
有赞技术团队
有赞技术团队
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
The Hacker News
The Hacker News
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
博客园 - 三生石上(FineUI控件)
A
Arctic Wolf
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
C
CXSECURITY Database RSS Feed - CXSecurity.com
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Threat Research - Cisco Blogs
P
Proofpoint News Feed
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
P
Privacy & Cybersecurity Law Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CERT Recently Published Vulnerability Notes
S
SegmentFault 最新的问题
AWS News Blog
AWS News Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
Apple Machine Learning Research
Apple Machine Learning Research
P
Proofpoint News Feed
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost

CodeBlocQ

Jest - Mock Local Storage Have Mobx and React work with TypeScript TypeScript Abstract Class Check if a Docker image exists locally A-Star Pathfinding React Demo My Free and Open Source Expense Tracker App is on the App Store Pass artifacts around in between stages in gitlab CI How to start a tech company as a non technical individual Setup gitment on your Hexo blog
Loose assertions on arguments passed to function with Jest
Jonathan Klughertz · 2020-09-22 · via CodeBlocQ

Problem

Consider the following function and passing test

function foo(bar, arg) {
bar(Math.random(), arg);
}

test("bar is called", () => {
const barSpy = jest.fn();
foo(barSpy, "fake-argument");

expect(barSpy).toHaveBeenCalled();
});

foo is a function that calls bar with a random first argument and arg which is just passed through.

The test passes as expected, but what if we wanted to check that the second argument is equal to arg.

expect(...).toHaveBeenCalledWith(...args) requires the test to provide the exact list of arguments passed to our jest.fn spy during the call.

### Solution

Use the asymetric matcher expect.anything() to ignore the first argument passed to foo.

test("Match any argument", () => {
const barSpy = jest.fn();
foo(barSpy, "fake-argument");

expect(barSpy).toHaveBeenCalledWith(expect.anything(), "fake-argument");
});

### Better Solution

Use expect.any(constructor) to check that the first argument is a number

test("Match any number", () => {
const barSpy = jest.fn();
foo(barSpy, "fake-argument");

expect(barSpy).toHaveBeenCalledWith(expect.any(Number), "fake-argument");
});

### Other asymetric matchers

Jest also provides the following useful asymetric matchers:

expect.objectContaining(object) to check only certain properties of an object

expect.arrayContaining(array) to check only certain elements of an array

expect.stringContaining(string) to check part of a string

### Going further with jest-extended

If you need to be even more specific in your assertions, it might be worth checking out jest-extended

You will find useful additions to the base jest assertion API like:

myNumber.toBeWithin(0, 10)

myObject.toContainKeys([keys])

myText.toStartWith(prefix)

and many more ..

Happy testing :)