Questions tagged «jestjs»

Jest是Facebook基于Jasmine制作的JavaScript单元测试框架,并提供了自动模拟创建和jsdom环境。它通常用于测试React组件。

10
如何使用Jest模拟JavaScript窗口对象?
我需要测试一个在浏览器中打开新标签页的功能 openStatementsReport(contactIds) { window.open(`a_url_${contactIds}`); } 我想模拟窗口的open功能,以便验证传递给该open功能的URL是否正确。 使用Jest,我不知道该如何模拟window。我尝试window.open使用模拟功能进行设置,但是这种方式不起作用。下面是测试用例 it('correct url is called', () => { window.open = jest.fn(); statementService.openStatementsReport(111); expect(window.open).toBeCalled(); }); 但这给了我错误 expect(jest.fn())[.not].toBeCalled() jest.fn() value must be a mock function or spy. Received: function: [Function anonymous] 我应该对测试用例怎么办?任何建议或提示表示赞赏。

5
您如何使用Jest和react-testing-library测试元素的不存在?
我有一个组件库,我正在编写使用Jest和react-testing-library的单元测试。基于某些道具或事件,我想验证是否未渲染某些元素。 getByText,,getByTestId等引发错误,react-testing-library如果找不到该元素,则会导致该expect函数触发之前测试失败。 您如何使用react-testing-library测试是否在笑话中不存在?

10
用打字稿开玩笑地模拟依赖
测试在其他文件中具有依赖性的模块时。当将该模块分配为jest.Mock打字稿时,会给出错误mockReturnThisOnce(该方法(或任何其他jest.Mock方法)不依赖),这是因为先前已键入该方法。使打字稿继承jest.Mock中的类型的正确方法是什么? 这是一个简单的例子。 相依性 const myDep = (name: string) => name; export default myDep; 测试 import * as dep from '../depenendency'; jest.mock('../dependency'); it('should do what I need', () => { //this throws ts error // Property mockReturnValueOnce does not exist on type (name: string).... dep.default.mockReturnValueOnce('return') } 我觉得这是一个非常常见的用例,不确定如何正确键入。任何帮助将非常感激!

4
仅用Jest运行一项测试
很简单,我只想用Jest运行一个测试。 我放it.only或,describe.only但它仍然运行大量测试。我认为它可以运行自上次提交以来的所有测试,但它不应在only显式设置了标志的情况下就具有这种行为,对吗? 是什么导致此行为,以及如何运行单个测试?

6
开玩笑:禁用单元测试中的控制台的更好方法
我不知道是否有更好的方式禁用错误控制台 里面一个特定的玩笑测试(即,恢复原来的控制台/前每次测试后)。 这是我目前的方法: describe("Some description", () => { let consoleSpy; beforeEach(() => { if (typeof consoleSpy === "function") { consoleSpy.mockRestore(); } }); test("Some test that should not output errors to jest console", () => { expect.assertions(2); consoleSpy = jest.spyOn(console, "error").mockImplementation(); // some function that uses console error expect(someFunction).toBe("X"); expect(consoleSpy).toHaveBeenCalled(); }); …

3
如何在每个测试基础上更改模拟实现[Jestjs]
我想改变嘲笑依赖的实施在每个单一的测试基础上通过扩展默认模仿的行为,并恢复回原来的执行下一个测试执行时。 更简单地说,这就是我要实现的目标: 模拟依赖 在单个测试中更改/扩展模拟实现 下一次测试执行时恢复为原始模拟 我目前正在使用Jest v21。 典型的Jest测试如下所示: __mocks__/myModule.js const myMockedModule = jest.genMockFromModule('../myModule'); myMockedModule.a = jest.fn(() => true); myMockedModule.b = jest.fn(() => true); export default myMockedModule; __tests__/myTest.js import myMockedModule from '../myModule'; // Mock myModule jest.mock('../myModule'); beforeEach(() => { jest.clearAllMocks(); }); describe('MyTest', () => { it('should test with default mock', () …

2
您可以编写预期会抛出的异步测试吗?
我正在编写一个异步测试,期望异步函数像这样抛出: it("expects to have failed", async () => { let getBadResults = async () => { await failingAsyncTest() } expect(await getBadResults()).toThrow() }) 但是开玩笑只是失败而未通过测试: FAIL src/failing-test.spec.js ● expects to have failed Failed: I should fail! 如果我将测试重写为如下所示: expect(async () => { await failingAsyncTest() }).toThrow() 我收到此错误,而不是通过测试: expect(function).toThrow(undefined) Expected the function to throw an …
86 jestjs 



6
模拟Jest中的按钮单击
模拟按钮单击似乎是非常简单/标准的操作。但是,我无法在Jest.js测试中使用它。 这是我尝试过的(也使用jQuery完成),但似乎没有触发任何操作: import { mount } from 'enzyme'; page = <MyCoolPage />; pageMounted = mount(page); const button = pageMounted.find('#some_button'); expect(button.length).toBe(1); // It finds it alright button.simulate('click'); // Nothing happens


3
如何在每次测试之前重置Jest模拟功能调用计数
我是Jest的新手,我正在尝试将其用于测试是否调用了函数。我注意到对ock.calls.length来说并不是每次测试都会重置,而是不断积累。每次测试前如何将其设置为0?我不希望我的下一个测试取决于上一个的结果。 我知道Jest中有beforeEach-我应该使用它吗?重置模拟的最佳方法是什么?calls.length?谢谢。 一个代码示例: Sum.js: import local from 'api/local'; export default { addNumbers(a, b) { if (a + b <= 10) { local.getData(); } return a + b; }, }; Sum.test.js import sum from 'api/sum'; import local from 'api/local'; jest.mock('api/local'); // For current implementation, there is a difference // if I …


2
如何在Jest中正确使模拟抛出错误?
我正在使用Jest测试我的GraphQL API。 我为每个查询/突变使用单独的测试服 我有2个测试(每个测试都在单独的测试服中),其中我模拟了一个callMethod用于突变的函数(即Meteor's )。 it('should throw error if email not found', async () => { callMethod .mockReturnValue(new Error('User not found [403]')) .mockName('callMethod'); const query = FORGOT_PASSWORD_MUTATION; const params = { email: 'user@example.com' }; const result = await simulateQuery({ query, params }); console.log(result); // test logic expect(callMethod).toBeCalledWith({}, 'forgotPassword', { email: …

3
Jest中describe和it有什么区别?
在编写单元测试时Jest或Jasmine何时使用describe? 您it什么时候使用? 我通常会 describe('my beverage', () => { test('is delicious', () => { }); }); 什么时候来新的describe或新的it?
79 jasmine  jestjs 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.