Definitelytyped: μ•½μ†ν•˜λ‹€<string>.toEqual은 λ¬Έμžμ—΄ λ§€κ°œλ³€μˆ˜λ₯Ό ν—ˆμš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 약속도 ν•„μš”ν•©λ‹ˆλ‹€.</string>

에 λ§Œλ“  2017λ…„ 03μ›” 16일  Β·  13μ½”λ©˜νŠΈ  Β·  좜처: DefinitelyTyped/DefinitelyTyped

  • [x] @types/2.5.46 νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•΄ λ³΄μ•˜λŠ”λ° λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.
  • [ ] μ•ˆμ •μ μΈ μ΅œμ‹  λ²„μ „μ˜ tscλ₯Ό μ‚¬μš©ν•΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. https://www.npmjs.com/package/typescript
  • [ ] StackOverflow 에 μ ν•©ν•˜μ§€ μ•Šμ€ 질문이 μžˆμŠ΅λ‹ˆλ‹€. (μ μ ˆν•œ 질문이 있으면 κ±°κΈ°μ—μ„œ μ§ˆλ¬Έν•˜μ‹­μ‹œμ˜€.)
  • [ ] [λ©˜μ…˜](https://github.com/blog/821-mention-somebody-they-re-notified) μž‘μ„±μž( Definitions by: in index.d.ts )κ°€ 응닡할 수 μžˆλ„λ‘ .

2.5.45μ—μ„œλŠ” λ‹€μŒκ³Ό 같이 ν•  수 μžˆμ—ˆμŠ΅λ‹ˆλ‹€.
expect(element(by.id('id')).getAttribute('attr')).toEqual('myValue');
이제 그것은 λ‚˜μ—κ²Œ 였λ₯˜λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€
TS2345:Argument of type '"myValue"' is not assignable to parameter of type 'Expected<Promise<string>>'.

getAttribute λ‹€μŒμ— .toString을 μΆ”κ°€ν•˜λ©΄ λΆˆν‰μ΄ μ€‘μ§€λ˜μ§€λ§Œ μž‘λ™ν•˜λŠ”μ§€ ν™•μ‹ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

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

이 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ λͺ‡ 가지 ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆλ‹€.

  1. 타이핑 버전을 2.5.45둜 μˆ˜μ •
    이것은 λ‹¨μˆœνžˆ μ΅œμ‹  μž‘μ—… 버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    타이핑 버전을 μˆ˜μ •ν•˜λŠ” 것은 SemVerλ₯Ό λ”°λ₯Ό 수 μ—†κ³  λ§ˆμ΄λ„ˆ 버전을 λ³€κ²½ν•˜λ©΄ λΉŒλ“œκ°€ μ‰½κ²Œ 손상될 수 있기 λ•Œλ¬Έμ— μ–΄μ¨Œλ“  λͺ¨λ²” 사둀 κ°€ λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
    λ‹€μŒ 문제λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14579
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14569
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14338
    https://github.com/DefinitelyTyped/DefinitelyTyped/pull/13994#issuecomment -275949045

  2. expect λŒ€ν•œ 일반 λ§€κ°œλ³€μˆ˜λ‘œ any expect
    μƒˆλ‘œμš΄ 타이핑을 톡해 이전 λ™μž‘μ„ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. any κ³Ό 같은 μœ ν˜•μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜κΈ°

expect<any>(element(by.id('id')).getAttribute('attr')).toEqual('myValue');
  1. 비동기 expect ν•¨μˆ˜μ— λŒ€ν•œ μž…λ ₯을 μž‘μ„±ν•˜κ³  ν”„λ‘œμ νŠΈμ— μΆ”κ°€ν•©λ‹ˆλ‹€.
    이것은 μ΅œμƒμ˜ μ†”λ£¨μ…˜μ΄μ§€λ§Œ 각도기가 μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    μ•„λ§ˆλ„ λ‹€μŒκ³Ό 같이 보일 κ²ƒμž…λ‹ˆλ‹€.
    // UNTESTED CODE!
    interface AsyncMatchers<T> extends Matchers<Promise<T>> {
        toBe(expected: Expected<T>, expectationFailOutput?: any): boolean;
        toEqual(expected: Expected<T>, expectationFailOutput?: any): boolean;
        toContain(expected: T, expectationFailOutput?: any): boolean;
        not: AsyncMatchers<T>;
    }

A의이 μ½”λ“œλ₯Ό μΆ”κ°€ protractor.d.ts λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€ ν”„λ‘œμ νŠΈμ˜ μ–΄λ”˜κ°€μ— 타이프 슀크립트 μ»΄νŒŒμΌλŸ¬μ™€ κ·Έκ²ƒμ˜ 약속을 μ£Όμ–΄ λ‹Ήμ‹ μ˜ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό expect μ—μ„œ μ œκ³΅ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ‹€μ œλ‘œ 결의 toEqual

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

예, 이것은 TypeScriptμ—μ„œ 각도기λ₯Ό μ‚¬μš©ν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ—κ²Œ 큰 λ¬Έμ œμž…λ‹ˆλ‹€.

Jasmine(λ˜λŠ” μˆ˜μ •ν•˜λŠ” 경우 Protractor의 Jasmine 버전 - ν™•μ‹€ν•˜μ§€ μ•Šμ€κ°€μš”?)은 ν…ŒμŠ€νŠΈ μž‘μ„±μžκ°€ 약속을 직접 ν•΄κ²°ν•  ν•„μš” 없이 약속을 μ˜ˆμƒν•œ λ‹€μŒ μ•½μ†μ˜ ν•΄κ²°λœ 값을 ν…ŒμŠ€νŠΈν•˜λŠ” 것을 μ§€μ›ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@lukas-zech-softwareκ°€ 일치 ν•­λͺ©μ„ μΌλ°˜ν™”ν•œ 것 κ°™μŠ΅λ‹ˆλ‹€. μ΄λŠ” 정말 λ©‹μ§€μ§€λ§Œ 약속을 μ „λ‹¬ν•˜κ³  ν•΄κ²°λœ κ°’κ³Ό μΌμΉ˜ν•˜λŠ” 것을 μ€‘λ‹¨ν•©λ‹ˆλ‹€.

PR의 μ½”λ©˜νŠΈ μ—μ„œ 이미 μ–ΈκΈ‰ν–ˆλ“―μ΄ 이것은 재슀민 타이핑이 ν•  수 μžˆλŠ” 것이 μ•„λ‹™λ‹ˆλ‹€.

κ°λ„κΈ°λŠ” κΈ°λŠ₯을 ν™•μž₯ν•˜λ―€λ‘œ 이에 λŒ€ν•œ μž…λ ₯을 μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€.
ν™•μ‹€νžˆ μœ ν˜•μ΄ μ§€μ •λœ 각도기에 λŒ€ν•œ μž…λ ₯이 μžˆλŠ” 경우 ν…ŒμŠ€νŠΈ 쀑에 λ°œμƒν–ˆμ„ κ²ƒμ΄μ§€λ§Œ λ°œμƒν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ—¬κΈ°μ—μ„œ μˆ˜μ •ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
μ‹€μ œλ‘œ κ°λ„κΈ°λŠ” 이에 λŒ€ν•œ μž…λ ₯을 μ „ν˜€ μ œκ³΅ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ any λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ μˆ˜λ½ν•˜λŠ” expect 에 μ˜μ‘΄ν•©λ‹ˆλ‹€.

재슀민 μžμ²΄μ—μ„œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 비동기 expect λŒ€ν•œ 타이핑을 거의 μΆ”κ°€ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
각도기에 λŒ€ν•œ 문제λ₯Ό μ—΄κ³  재슀민 μž…λ ₯을 μ˜¬λ°”λ₯΄κ²Œ ν™•μž₯ν•˜λ„λ‘ μš”μ²­ν•˜μ‹­μ‹œμ˜€.

이 λ¬Έμ œκ°€ 해결될 λ•ŒκΉŒμ§€ λͺ‡ 가지 ν•΄κ²° 방법이 μžˆμŠ΅λ‹ˆλ‹€.

  1. 타이핑 버전을 2.5.45둜 μˆ˜μ •
    이것은 λ‹¨μˆœνžˆ μ΅œμ‹  μž‘μ—… 버전을 μ‚¬μš©ν•©λ‹ˆλ‹€.
    타이핑 버전을 μˆ˜μ •ν•˜λŠ” 것은 SemVerλ₯Ό λ”°λ₯Ό 수 μ—†κ³  λ§ˆμ΄λ„ˆ 버전을 λ³€κ²½ν•˜λ©΄ λΉŒλ“œκ°€ μ‰½κ²Œ 손상될 수 있기 λ•Œλ¬Έμ— μ–΄μ¨Œλ“  λͺ¨λ²” 사둀 κ°€ λ˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
    λ‹€μŒ 문제λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14579
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14569
    https://github.com/DefinitelyTyped/DefinitelyTyped/issues/14338
    https://github.com/DefinitelyTyped/DefinitelyTyped/pull/13994#issuecomment -275949045

  2. expect λŒ€ν•œ 일반 λ§€κ°œλ³€μˆ˜λ‘œ any expect
    μƒˆλ‘œμš΄ 타이핑을 톡해 이전 λ™μž‘μ„ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. any κ³Ό 같은 μœ ν˜•μœΌλ‘œ μ‚¬μš©ν•˜λ„λ‘ λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜κΈ°

expect<any>(element(by.id('id')).getAttribute('attr')).toEqual('myValue');
  1. 비동기 expect ν•¨μˆ˜μ— λŒ€ν•œ μž…λ ₯을 μž‘μ„±ν•˜κ³  ν”„λ‘œμ νŠΈμ— μΆ”κ°€ν•©λ‹ˆλ‹€.
    이것은 μ΅œμƒμ˜ μ†”λ£¨μ…˜μ΄μ§€λ§Œ 각도기가 μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    μ•„λ§ˆλ„ λ‹€μŒκ³Ό 같이 보일 κ²ƒμž…λ‹ˆλ‹€.
    // UNTESTED CODE!
    interface AsyncMatchers<T> extends Matchers<Promise<T>> {
        toBe(expected: Expected<T>, expectationFailOutput?: any): boolean;
        toEqual(expected: Expected<T>, expectationFailOutput?: any): boolean;
        toContain(expected: T, expectationFailOutput?: any): boolean;
        not: AsyncMatchers<T>;
    }

A의이 μ½”λ“œλ₯Ό μΆ”κ°€ protractor.d.ts λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€ ν”„λ‘œμ νŠΈμ˜ μ–΄λ”˜κ°€μ— 타이프 슀크립트 μ»΄νŒŒμΌλŸ¬μ™€ κ·Έκ²ƒμ˜ 약속을 μ£Όμ–΄ λ‹Ήμ‹ μ˜ 문제λ₯Ό ν•΄κ²°ν•΄μ•Ό expect μ—μ„œ μ œκ³΅ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ‹€μ œλ‘œ 결의 toEqual

@lukas-zech-softwareλ₯Ό μ •λ¦¬ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. λ‹€μ–‘ν•œ μ†”λ£¨μ…˜μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€. λ‚˜λŠ” 타이핑을 μ§€κΈˆμ€ 이전 λ²„μ „μœΌλ‘œ μž κ·ΈλŠ” κ²ƒμœΌλ‘œ 끝났닀.

닫을 수 μžˆλ‹€κ³  μ œμ•ˆν•˜μ‹­μ‹œμ˜€.

async / awaitλ₯Ό μ‚¬μš©ν•˜μ—¬ 약속을 "μ—­μ°Έμ‘°"ν•˜λ©΄ μž‘λ™ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ λŒ€μ‹ 

it('should have header', () => {
    let subject = element(by.css('h1')).isPresent();
    let result  = true;
    expect(subject).toEqual(result);
  });

그것을 가지고

it('should have header', async () => {
    let subject = await element(by.css('h1')).isPresent();
    let result  = true;
    expect(subject).toEqual(result);
  });

μ˜ˆμƒν•˜λ‹€(
μ—κ²Œ
μ˜ˆμƒν•˜λ‹€(

그것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆλ‹€

링크 μ—μ„œ @types/jasminewd μ„€μΉ˜κ°€ μ €μ—κ²Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

beforeEach(() => {
νŽ˜μ΄μ§€ = μƒˆλ‘œμš΄ xxx();
λΈŒλΌμš°μ €.waitForAngularEnabled(거짓);
});

이것은 문제λ₯Ό ν•΄κ²°

μ €μ—κ²ŒλŠ” 이 λŒ“κΈ€λ‹Ή tsconfig.e2e.json 쑰정이 νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. CLI 관리 ν”„λ‘œμ νŠΈμ—μ„œ Angular 4μ—μ„œ 5둜 μ—…λ°μ΄νŠΈν•  λ•Œ λ‚΄ λ¬Έμ œκ°€ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€.
https://github.com/angular/protractor/issues/4176#issuecomment -310610380

뢀정확성을 μœ μ§€ν•  수 μžˆλ‹€λ©΄ λ‹€λ₯Έ ν•΄κ²° 방법은 λ¬Έμžμ—΄μ„ μ‚¬μš©ν•˜μ—¬ toEqual을 μ‚­μ œν•˜κ³  λŒ€μ‹  toContain을 μš”μ²­ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

@types/jasminewd2 μ„€μΉ˜ν•˜λ©΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ €μ—κ²ŒλŠ” 이 λŒ“κΈ€λ‹Ή tsconfig.e2e.json 쑰정이 νš¨κ³Όκ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€. CLI 관리 ν”„λ‘œμ νŠΈμ—μ„œ Angular 4μ—μ„œ 5둜 μ—…λ°μ΄νŠΈν•  λ•Œ λ‚΄ λ¬Έμ œκ°€ λ‚˜νƒ€λ‚¬μŠ΅λ‹ˆλ‹€.
각도/각도기#4176(μ½”λ©˜νŠΈ)

@types/jasminewd2 ν•˜κ³  μ΄λ ‡κ²Œ ν•˜λŠ” 것이 μ •λ‹΅μž…λ‹ˆλ‹€.

@types/jasminewd2 μ„€μΉ˜κ°€ 정닡이 μ•„λ‹™λ‹ˆλ‹€.

  • jasminewd2 λŠ” jasmine v2λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λ―€λ‘œ v3의 jasmine μœ ν˜•κ³Ό λ°˜λ“œμ‹œ β€‹β€‹ν˜Έν™˜λ˜λŠ” 것은 μ•„λ‹™λ‹ˆλ‹€.
  • 그것이 μž‘λ™ν•˜λŠ” μ΄μœ λŠ” λͺ¨λ“  μž…λ ₯을 any -dν•˜κΈ° λ•Œλ¬Έμ— μš°μ—°μ˜ μΌμΉ˜μž…λ‹ˆλ‹€.

정닡은 λ‹€μŒ 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

  • 여기에 μ„€λͺ…λœ λŒ€λ‘œ κ²°κ³Όλ₯Ό κΈ°λ‹€λ¦½λ‹ˆλ‹€
  • 각도기 타이핑을 ν™•μž₯ν•˜κ±°λ‚˜ μž¬μŠ€λ―Όμ„ μ μ ˆν•˜κ²Œ ν™•μž₯ν•  μƒˆ 타이핑 νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.
  • μ΅œμ‹  μž¬μŠ€λ―Όμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ expectAsync μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.
이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰