Tests: Refactor lib/plugins/aws/package/compile/events/cloudFront/index.test.js
#8,528 创建于 2020年11月20日
描述
Most of the tests that currently cover core functionalities depend heavily on (and sometimes test) internal implementation characteristics. While they should be testing whether given implementation produces desired outcome (treating its implementation more as a black box).
Current state of things is problematic for eventual internal improvements and refactors which occasionally we want to introduce, as in most of such cases proposed improvements need to be accompanied with counterproductive numerous updates to tests which are covering otherwise not altered functionalities .
At some point we've introduced a new (black box based) way of testing the internals. It's through runServerless utlity, which allows us create natural (as in real world) serverless instance, and inspect the produced outcome for chosen command. More details here: https://github.com/serverless/serverless/tree/master/test#unit-tests
This is issue is about refactoring lib/plugins/aws/package/compile/events/cloudFront/index.test.js to runServerless based variant.
It's needed, so we cleanly move forward with https://github.com/serverless/serverless/issues/8502
To make refactor relatively easy:
- Spec for new tests is fully defined and is already committed in. It's in scope of this describe block: https://github.com/serverless/serverless/blob/4b3c3552eae9a6fe36342b3b045531f808aa9d34/lib/plugins/aws/package/compile/events/cloudFront/index.test.js#L1632
- Each test slot indicates which test it is about to replace
- It is indicated where (and how many) exactly
runServerlessruns are expected to happen, against which fixture and command they should be based - Necessary hints are provided
For every refactored test, the old test should be removed
Refactor can be submitted with one PR, but partial refactors that cover some of below listed parts are also very welcome:
- Removal notice: https://github.com/serverless/serverless/blob/4b3c3552eae9a6fe36342b3b045531f808aa9d34/lib/plugins/aws/package/compile/events/cloudFront/index.test.js#L1633-L1657
- Validation: https://github.com/serverless/serverless/blob/4b3c3552eae9a6fe36342b3b045531f808aa9d34/lib/plugins/aws/package/compile/events/cloudFront/index.test.js#L1659-L1742
- Alternative cases: https://github.com/serverless/serverless/blob/4b3c3552eae9a6fe36342b3b045531f808aa9d34/lib/plugins/aws/package/compile/events/cloudFront/index.test.js#L1808-L1836
- Resource generation: https://github.com/serverless/serverless/blob/4b3c3552eae9a6fe36342b3b045531f808aa9d34/lib/plugins/aws/package/compile/events/cloudFront/index.test.js#L1949-L2010