Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

Commit c6499cc

Browse files
OrKoNDevtools-frontend LUCI CQ
authored andcommitted
Add unit test examples
Bug: none Change-Id: Id955d0aaeddde448f6aff2848fd9561f0c5e838a Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6276125 Reviewed-by: Danil Somsikov <dsv@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Alex Rudenko <alexrudenko@chromium.org>
1 parent ad4ae1c commit c6499cc

1 file changed

Lines changed: 33 additions & 0 deletions

File tree

docs/ui_engineering.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,36 @@ class StylesPane extends UI.Widget {
7979
[https://source.chromium.org/chromium/chromium/src/+/main:third\_party/devtools-frontend/src/front\_end/panels/developer\_resources/DeveloperResourcesListView.ts;l=86](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/panels/developer_resources/DeveloperResourcesListView.ts;l=86)
8080
8181
[https://source.chromium.org/chromium/chromium/src/+/main:third\_party/devtools-frontend/src/front\_end/panels/timeline/TimelineSelectorStatsView.ts;l=113](https://source.chromium.org/chromium/chromium/src/+/main:third_party/devtools-frontend/src/front_end/panels/timeline/TimelineSelectorStatsView.ts;l=113)
82+
83+
84+
### Unit tests
85+
86+
When testing presenter behavior await a view update or a model call:
87+
88+
```ts
89+
// ✅ recommended: stub the view function.
90+
const view = sinon.stub();
91+
const presenter = new Presenter(view);
92+
93+
// ✅ recommended: expect a view stub call in response to presenter behavior.
94+
const viewCall = expectCall(view);
95+
present.show();
96+
const [{onEvent}] = await viewCall;
97+
98+
// ✅ recommended: expect a view stub call in response to an event from the view.
99+
const viewCall2 = expectCall(view);
100+
onEvent();
101+
const [{data}] = await viewCall2;
102+
assert.deepStrictEqual(data, {});
103+
104+
// ❌ not recommended: Widget.updateComplete only reports a current view update
105+
// operation status and might create flakiness depending on doSomething() implementation.
106+
presenter.doSomething();
107+
await presenter.updateComplete;
108+
assert.deepStrictEqual(view.lastCall.args[0], {});
109+
110+
// ❌ not recommended: awaiting for the present logic to finish might
111+
// not account for async or throttled view updates.
112+
await presenter.doSomething();
113+
assert.deepStrictEqual(view.lastCall.args[0], {});
114+
```

0 commit comments

Comments
 (0)