Feathers: Windows ν”Œλž«νΌμ—μ„œ μƒμ„±λœ 앱에 λŒ€ν•΄ jestλ₯Ό μ‚¬μš©ν•œ ν…ŒμŠ€νŠΈκ°€ λ•Œλ•Œλ‘œ μ‹€νŒ¨ν•¨

에 λ§Œλ“  2019λ…„ 11μ›” 05일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: feathersjs/feathers

μž¬ν˜„ 단계

  • [ ] 무엇이 κ³ μž₯λ‚¬λŠ”μ§€ μ•Œλ €μ£Όμ„Έμš”. μƒμ„Έν• μˆ˜λ‘ μ’‹μŠ΅λ‹ˆλ‹€.
    μƒμ„±ν•˜κ³  μ μš©ν•œ ν›„ 아무 것도 λ³€κ²½ν•˜μ§€ μ•ŠμœΌλ©΄ jest ν…ŒμŠ€νŠΈ μ œν’ˆκ΅°μ΄ Windowsμ—μ„œ 항상 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

  • [ ] κ°€λŠ₯ν•˜λ©΄ 문제λ₯Ό μž¬ν˜„ν•˜λŠ” κ°„λ‹¨ν•œ 예제λ₯Ό λ§Œλ“€κ³  μš”μ§€, jsbin, repo 등에 링크λ₯Ό μ—°κ²°ν•˜μ„Έμš”. μ΄λ ‡κ²Œ ν•˜λ©΄ λ””λ²„κ·Έν•˜κΈ°κ°€ 훨씬 μ‰¬μ›Œμ§€κ³  μž¬ν˜„ κ°€λŠ₯ν•œ μ˜ˆμ œκ°€ μžˆλŠ” 문제의 μš°μ„  μˆœμœ„κ°€ 더 λ†’μ•„μ§‘λ‹ˆλ‹€.

feathers generate app
? Do you want to use JavaScript or TypeScript? JavaScript
? Project name feathers
? Description
? What folder should the source files live in? src
? Which package manager are you using (has to be installed globally)? Yarn
? What type of API are you making? (Press <space> to select, <a> to toggle all, <i> to invert selection)REST, Realtime v
ia Socket.io
? Which testing framework do you prefer? Jest
? This app uses authentication Yes
? What authentication strategies do you want to use? (See API docs for all 180+ supported oAuth providers) Username + Pa
ssword (Local)
? What is the name of the user (entity) service? users
? What kind of service is it? NeDB
? What is the database connection string? nedb://../data

yarn jest

μ˜ˆμƒλ˜λŠ” 행동

λͺ¨λ“  ν…ŒμŠ€νŠΈλŠ” 항상 ν†΅κ³Όν•©λ‹ˆλ‹€.

μ‹€μ œ 행동

λ‚˜λŠ” 항상 이것을 μ–»λŠ”λ‹€:

\feathers\node_modules\nedb\lib\datastore.js:77
    if (err) { throw err; }
               ^

[Error: EPERM: operation not permitted, rename 'C:\Users\stef\feathers\data\users.db~' -> 'C:\Users\stef\feathers\data\users.db'] {
  errno: -4048,
  code: 'EPERM',
  syscall: 'rename',
  path: 'C:\\Users\\stef\\feathers\\data\\users.db~',
  dest: 'C:\\Users\\stef\\feathers\\data\\users.db'
}

그리고 λ•Œλ‘œλŠ” ν…ŒμŠ€νŠΈκ°€ ν†΅κ³Όν•˜κ³  λ•Œλ‘œλŠ” 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€ (! 30000ms μ‹œκ°„ 초과둜 μ‹œλ„ν–ˆμ§€λ§Œ λ™μΌν•œ κ²°κ³Ό)

    : Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error:

      20 |     });
      21 |
    > 22 |     it('authenticates user and creates accessToken', async () => {
         |     ^
      23 |       const { user, accessToken } = await app.service('authentication').create({
      24 |         strategy: 'local',
      25 |         ...userInfo

      at new Spec (node_modules/jest-jasmine2/build/jasmine/Spec.js:116:22)
      at Suite.<anonymous> (test/authentication.test.js:22:5)
      at Suite.<anonymous> (test/authentication.test.js:8:3)
      at Object.<anonymous> (test/authentication.test.js:3:1)

Test Suites: 1 failed, 2 passed, 3 total
Tests:       1 failed, 5 passed, 6 total
Snapshots:   0 total
Time:        25.515s

μ‹œμŠ€ν…œ μ„€μ •

NodeJS 버전 :
v12.13.0

운영 체제 :
μœˆλ„μš° 10

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

Ubuntuμ—μ„œ λͺ‡ 가지 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν–ˆλŠ”λ° λ™μΌν•œ μ’…λ₯˜μ˜ μž„μ˜ λ¬Έμ œκ°€ μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
범인을 찾은 것 κ°™μ•„μš”. μ•„λ§ˆλ„ νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” NeDB일 κ²ƒμž…λ‹ˆλ‹€. 그리고 μ§€κΈˆ κ΅¬μ„±λœ λŒ€λ‘œ λ¬΄μž‘μœ„ μΆ©λŒμ„ μΌμœΌν‚€λŠ” ν…ŒμŠ€νŠΈλ₯Ό λ³‘λ ¬λ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
--runInBand μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ jestλ₯Ό μ‹€ν–‰ν•˜λ©΄ 더 이상 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.
이 λ¬Έμ œλŠ” 닫을 수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

Ubuntuμ—μ„œ λͺ‡ 가지 ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν–ˆλŠ”λ° λ™μΌν•œ μ’…λ₯˜μ˜ μž„μ˜ λ¬Έμ œκ°€ μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.
범인을 찾은 것 κ°™μ•„μš”. μ•„λ§ˆλ„ νŒŒμΌμ„ μ‚¬μš©ν•˜λŠ” NeDB일 κ²ƒμž…λ‹ˆλ‹€. 그리고 μ§€κΈˆ κ΅¬μ„±λœ λŒ€λ‘œ λ¬΄μž‘μœ„ μΆ©λŒμ„ μΌμœΌν‚€λŠ” ν…ŒμŠ€νŠΈλ₯Ό λ³‘λ ¬λ‘œ μ‹€ν–‰ν•©λ‹ˆλ‹€.
--runInBand μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ jestλ₯Ό μ‹€ν–‰ν•˜λ©΄ 더 이상 λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.
이 λ¬Έμ œλŠ” 닫을 수 μžˆμŠ΅λ‹ˆλ‹€.

@daffl 이 λ¬Έμ œλŠ” 더 λ§Žμ€ 쑰사λ₯Ό μœ„ν•΄ λ‹€μ‹œ μ—΄λ €μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

--runInBand μ˜΅μ…˜μ„ μ‹œλ„ν–ˆμ§€λ§Œ μ—¬μ „νžˆ λ™μΌν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

[Error: ENOENT: no such file or directory, rename '/home/sullivan/p/gitlab.com/project/api/test/data/rides.db~' -> '/home/sullivan/p/gitlab.com/project/api/test/data/rides.db'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'rename',
  path: '/home/sullivan/p/gitlab.com/data/api/test/data/rides.db~',
  dest: '/home/sullivan/p/gitlab.com/data/api/test/data/rides.db'
}

μœ μš©ν•œ μΆ”κ°€ 정보λ₯Ό μΆ”κ°€ν•˜κ³  μ‹Άμ§€λ§Œ λ””λ²„κ·Έν•˜λ €λŠ” ν•­λͺ©μ— λŒ€ν•œ λͺ‡ 가지 λ‹¨μ„œκ°€ ν•„μš”ν•©λ‹ˆλ‹€. :+1:

GitHub Action λŸ¬λ„ˆμ™€ ν•¨κ»˜ Jestλ₯Ό μ‚¬μš©ν•  λ•Œλ„ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν…ŒμŠ€νŠΈλŠ” macOSκ°€ μ„€μΉ˜λœ 둜컬 μ»΄ν“¨ν„°μ—μ„œ μ œλŒ€λ‘œ μ‹€ν–‰λ©λ‹ˆλ‹€. (a) λ©”λͺ¨λ¦¬ λ‚΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ (b) 각 ν…ŒμŠ€νŠΈμ— λŒ€ν•΄ 동적 파일 이름을 μ‚¬μš©ν•˜λ„λ‘ ν…ŒμŠ€νŠΈλ₯Ό μ—…λ°μ΄νŠΈν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μ €λŠ” 아버지 μƒνƒœκ³„κ°€ 처음이라 κ΅¬ν˜„ 방법을 λͺ¨λ¦…λ‹ˆλ‹€.

μ΅œμ†Œν•œ Jest에 λŒ€ν•œ μ œν•œλœ 지원을 더 잘 λ°˜μ˜ν•˜λ„λ‘ λ¬Έμ„œκ°€ μ—…λ°μ΄νŠΈλ˜λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€. νŠœν† λ¦¬μ–Όμ΄λ‚˜ Mocha 선택을 μ œμ•ˆν•˜λŠ” λ§ˆλ²•μ‚¬κ°€ μžˆμ—ˆλ˜ 걸둜 κΈ°μ–΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ Jest에 λŒ€ν•œ 더 λ§Žμ€ κ²½ν—˜μ΄ μžˆμœΌλ―€λ‘œ Jest와 ν•¨κ»˜ν–ˆμŠ΅λ‹ˆλ‹€. λ¬Έμ„œκ°€ μ ˆμΆ©μ•ˆμ„ 더 잘 μ„€λͺ…ν–ˆλ‹€λ©΄ λ‹€λ₯Έ 결정을 내렸을 κ²ƒμž…λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ 1: https://burnedikt.com/feathers-and-nedb-for-testing/ 의 단계에 따라 λ©”λͺ¨λ¦¬ λ‚΄ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν…ŒμŠ€νŠΈλ₯Ό μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.

μ—…λ°μ΄νŠΈ 2: Feathers CLIλŠ” connectionString κ°€ 단일 λ¬Έμžμ—΄(예: 경둜)이라고 κ°€μ •ν•©λ‹ˆλ‹€. NeDB 지원 μ„œλΉ„μŠ€μ—μ„œ μ„œλΉ„μŠ€ 생성기λ₯Ό μ‚¬μš©ν•˜λ €λ©΄ nedb κ°€ λ¬Έμžμ—΄μ΄ λ˜λ„λ‘ config/default.json 에 λŒ€ν•œ λ³€κ²½ 사항을 λ˜λŒλ €μ•Ό ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰