Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit fa34bdd

Browse files
feat: add provideMockWithValues (testing-library#238)
1 parent f6d559d commit fa34bdd

File tree

3 files changed

+39
-11
lines changed

3 files changed

+39
-11
lines changed

‎package.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@
4646
"core-js": "^3.6.5",
4747
"rxjs": "^6.5.5",
4848
"tslib": "^2.0.0",
49-
"zone.js": "~0.11.4"
49+
"zone.js": "^0.11.4"
5050
},
5151
"devDependencies": {
5252
"@angular-devkit/build-angular": "12.1.0",
53-
"@angular-eslint/eslint-plugin": "~12.2.0",
54-
"@angular-eslint/eslint-plugin-template": "~12.2.0",
55-
"@angular-eslint/template-parser": "~12.2.0",
53+
"@angular-eslint/eslint-plugin": "^12.2.0",
54+
"@angular-eslint/eslint-plugin-template": "^12.2.0",
55+
"@angular-eslint/template-parser": "^12.2.0",
5656
"@angular/cli": "12.1.0",
5757
"@angular/compiler-cli": "12.1.1",
5858
"@angular/language-service": "12.1.1",
@@ -65,7 +65,7 @@
6565
"@nrwl/workspace": "12.5.1",
6666
"@testing-library/jasmine-dom": "^1.2.0",
6767
"@testing-library/jest-dom": "^5.11.10",
68-
"@types/jasmine": "~3.5.0",
68+
"@types/jasmine": "^3.5.0",
6969
"@types/jest": "^26.0.23",
7070
"@types/node": "14.14.37",
7171
"@typescript-eslint/eslint-plugin": "4.28.2",
@@ -79,13 +79,13 @@
7979
"eslint-plugin-jest-dom": "3.9.0",
8080
"eslint-plugin-testing-library": "4.9.0",
8181
"husky": "^6.0.0",
82-
"jasmine-core": "~3.7.0",
83-
"jasmine-spec-reporter": "~5.0.0",
82+
"jasmine-core": "^3.7.0",
83+
"jasmine-spec-reporter": "^5.0.0",
8484
"jest": "^27.0.6",
8585
"jest-preset-angular": "9.0.4",
86-
"karma": "~6.3.4",
87-
"karma-chrome-launcher": "~3.1.0",
88-
"karma-jasmine": "~4.0.0",
86+
"karma": "^6.3.4",
87+
"karma-chrome-launcher": "^3.1.0",
88+
"karma-jasmine": "^4.0.0",
8989
"karma-jasmine-html-reporter": "^1.5.0",
9090
"lint-staged": "^10.2.11",
9191
"ng-packagr": "12.0.0",

‎projects/jest-utils/src/lib/create-mock.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,10 @@ export function provideMock<T>(type: Type<T>): Provider {
4545
useValue: createMock(type),
4646
};
4747
}
48+
49+
export function provideMockWithValues<T, K extends keyof T>(type: Type<T>, values: Partial<Record<K, T[K]>>): Provider {
50+
return {
51+
provide: type,
52+
useValue: createMockWithValues(type, values),
53+
};
54+
}

‎projects/jest-utils/tests/create-mock.spec.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ import { Component } from '@angular/core';
22
import { TestBed } from '@angular/core/testing';
33
import { fireEvent, render, screen } from '@testing-library/angular';
44

5-
import { createMock, provideMock, Mock } from '../src/public_api';
5+
import { createMock, provideMock, provideMockWithValues,Mock } from '../src/public_api';
66

77
class FixtureService {
88
constructor(private foo: string, public bar: string) {}
99

1010
print() {
1111
console.log(this.foo, this.bar);
1212
}
13+
14+
concat() {
15+
return this.foo + this.bar;
16+
}
1317
}
1418

1519
@Component({
@@ -39,6 +43,23 @@ test('provides a mock service', async () => {
3943
expect(service.print).toHaveBeenCalledTimes(1);
4044
});
4145

46+
test('provides a mock service with values', async () => {
47+
await render(FixtureComponent, {
48+
providers: [provideMockWithValues(FixtureService, {
49+
bar: 'value',
50+
concat: jest.fn(() => 'a concatenated value')
51+
})],
52+
});
53+
54+
const service = TestBed.inject(FixtureService);
55+
56+
fireEvent.click(screen.getByText('Print'));
57+
58+
expect(service.bar).toEqual('value');
59+
expect(service.concat()).toEqual('a concatenated value');
60+
expect(service.print).toHaveBeenCalled();
61+
});
62+
4263
test('is possible to write a mock implementation', async () => {
4364
await render(FixtureComponent, {
4465
providers: [provideMock(FixtureService)],

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /