別の関数(親)内で宣言されている関数をテストしようとしています。私はいくつかのことを試しましたが、それをテストすることができませんでした。プロジェクトでreactライブラリとJESTテストフレームワークを使用しています。

これが私がテストしようとしているサービスファイル(service.ts)関数です:

import { useThisHook } from './base-hooks';

export function someFunction(param: string) {

  const [
    resolveFunction,
    ,
    { loading, error },
  ] = useThisHook();
  
  const childFun = (param : number) => {
     resolveFunction(someArguments);
  }
  
  return{
     someValue: childFun
  }
}

スペックファイルのコードは次のとおりです。

import * as SomeHooks from './base-hooks';
import * as Service from './service';

describe('Service function', () => {
  beforeEach(() => {
     jest.spyOn(SomeHooks, 'useThisHook').mockReturnValue(
      {
         //Some Value
      }
     );
  });

  test('Some function test', () => {
    const someFunctionResponse = Service.someFunction('string');

    expect(someFunctionResponse).toEqual({
        someValue: expect.any(Function),
    });
  });
});

ここまでは大丈夫です。テストも合格していますが、問題はchildFnカバレッジを取得していないことであり、それが私の要件です。私はReactとJestを初めて使用します。どうすればそれを達成できるのか理解できません。私は多くのことを試みましたが、成功しませんでした。

応答

あなたchildFnは呼ばれていません、それがそれが報道を得ていない理由です。

childFn全体を新しいフックにリファクタリングして、のようなもので個別にテストすることができますreact-hooks-testing-library

または、を分離してスコープchildFn外で宣言し、合格してからテストすることもできます。someFunctionresolveFunction

コードが宣言されたときではなく、コードが実際に呼び出された場合にのみカバレッジを取得します。