programing

웹팩 4 모듈을 자스민이 멤버를 감시할 수 있도록 구성할 수 있습니까?

telebox 2023. 6. 11. 10:36
반응형

웹팩 4 모듈을 자스민이 멤버를 감시할 수 있도록 구성할 수 있습니까?

웹팩 4에서 테스트 자스민 테스트 스위트를 실행할 수 없습니다.웹 팩을 업그레이드한 후 거의 모든 테스트에서 다음 오류가 발생합니다.

Error: <spyOn> : getField is not declared writable or has no setter 

이는 간단한 기능을 위한 스파이를 만드는 데 사용하는 일반적인 패턴 때문입니다.

import * as mod from 'my/module';
//...
const funcSpy = spyOn(mod, 'myFunc');

저는 가지고 놀았어요.module.rules[].type하지만 어떤 선택도 효과가 없는 것 같습니다

이 웹 팩 GH 문제는 ECMA 모듈이 쓰기 가능하지 않아야 한다는 것을 나타냅니다. 이는 웹에 적합하지만 테스트를 위한 해결 방법은 실제로 없습니까?

관련 패키지 버전:

"jasmine-core": "2.6.4",
"typescript": "2.5.3",
"webpack": "4.1.1",
"webpack-cli": "^2.0.12",
"karma": "^0.13.22",
"karma-jasmine": "^1.1.0",
"karma-webpack": "^2.0.13",

있다spyOnProperty이는 속성을 읽기 전용으로 처리할 수 있도록 설정합니다.accessType에 대한 주장.'get'.

그러면 설정이 다음과 같이 표시됩니다.

import * as mod from 'my/module';
//...
const funcSpy = jasmine.createSpy('myFunc').and.returnValue('myMockReturnValue');
spyOnProperty(mod, 'myFunc', 'get').and.returnValue(funcSpy);

GitHub 문제가 있습니다. 그들이 같은 결론에 도달하는 것은 불변의 수출입니다.그러나 사용자 레이블에는 테스트 및 프로덕션 코드를 위한 서로 다른 웹 팩 구성을 만든 해결 방법이 있습니다.테스트 구성은 다음을 사용합니다."commonjs"게터를 만들지 않음으로써 그들에게 효과가 있었던 것으로 보이는 모듈.

@Anton Poznyakowski의 대답에 추가합니다.

공유 테스트 모듈에 편의를 위해 TypeScript 기능을 추가했습니다.

export const spyOnFunction = <T>(obj: T, func: keyof T) => {
  const spy = jasmine.createSpy(func as string);
  spyOnProperty(obj, func, 'get').and.returnValue(spy);

  return spy;
};

사용 예:

import * as mod from 'my/module';
//...
spyOnFunction(mod, 'myFunc').and.returnValue('myMockReturnValue');

이 문제를 해결하기 위해 메소드를 사용자 지정 클래스로 래핑한 다음 모의 실행할 수 있습니다.

아래의 예:

//Common Utility

import * as library from './myLibrary'

export class CustomWrapper{
    static _func = library.func;
}

//Code File
import { CustomWrapper } from './util/moduleWrapper';

const output = CustomWrapper._func(arg1, arg2);

//Test File 

import { CustomWrapper } from './util/moduleWrapper';

spyOn(CustomWrapper, '_func').and.returnValue('mockedResult');

언급URL : https://stackoverflow.com/questions/49396736/can-webpack-4-modules-be-configured-as-to-allow-jasmine-to-spy-on-their-members

반응형