Require request specs when testing N+1 for controllers
This commit is contained in:
parent
1068483f72
commit
3b7df66eef
2 changed files with 8 additions and 1 deletions
|
@ -36,6 +36,13 @@ it "avoids N+1 database queries" do
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Use request specs instead of controller specs
|
||||||
|
|
||||||
|
Use a [request spec](https://gitlab.com/gitlab-org/gitlab-ce/tree/master/spec/requests) when writing a N+1 test on the controller level.
|
||||||
|
|
||||||
|
Controller specs should not be used to write N+1 tests as the controller is only initialized once per example.
|
||||||
|
This could lead to false successes where subsequent "requests" could have queries reduced (e.g. because of memoization).
|
||||||
|
|
||||||
## Finding the source of the query
|
## Finding the source of the query
|
||||||
|
|
||||||
It may be useful to identify the source of the queries by looking at the call backtrace.
|
It may be useful to identify the source of the queries by looking at the call backtrace.
|
||||||
|
|
|
@ -63,7 +63,7 @@ They're useful to test permissions, redirections, what view is rendered etc.
|
||||||
|
|
||||||
| Code path | Tests path | Testing engine | Notes |
|
| Code path | Tests path | Testing engine | Notes |
|
||||||
| --------- | ---------- | -------------- | ----- |
|
| --------- | ---------- | -------------- | ----- |
|
||||||
| `app/controllers/` | `spec/controllers/` | RSpec | |
|
| `app/controllers/` | `spec/controllers/` | RSpec | For N+1 tests, use [request specs](../query_recorder.md#use-request-specs-instead-of-controller-specs) |
|
||||||
| `app/mailers/` | `spec/mailers/` | RSpec | |
|
| `app/mailers/` | `spec/mailers/` | RSpec | |
|
||||||
| `lib/api/` | `spec/requests/api/` | RSpec | |
|
| `lib/api/` | `spec/requests/api/` | RSpec | |
|
||||||
| `lib/ci/api/` | `spec/requests/ci/api/` | RSpec | |
|
| `lib/ci/api/` | `spec/requests/ci/api/` | RSpec | |
|
||||||
|
|
Loading…
Reference in a new issue