javascript - როგორ უნდა შევქმნათ ნიმუში node მოდულების ქვემინი დირექტორიებიდან მონორეპოს ძირითადი დირექტორიის შიგნით?


მე ვიყენებ jest-ს TypeScript-თან ერთად და ამჟამად მაქვს მონორეპო ასეთი სტრუქტურით:

root
|-service1
|--.jest.config.ts
|--package.json
|--tsconfig.json
|-service2
|--.jest.config.ts
|--package.json
|--tsconfig.json
|-package.json
|-.jest.config.ts

სადაც თითოეულ service1 და service2 პროექტს აქვს თავისი პროექტი src ფოლდერითა და node_modules და ა.შ...

ახლა რაც მინდა გავაკეთო, არის პროექტის რუტში რამდენიმე ტესტური ფაილის შექმნა, რომელიც მოიცავს ყველა ფუნქციას service1 და service2 პროექტებში. ზოგიერთი ეს ფუნქცია იყენებს node მოდულებს, როგორიცაა axios და @aws-sdk, რისი მოკირება მინდა გავაკეთო.

პრობლემა, რაც მე წარმომიდგება, ის არის, რომ როცა მე ვწერ ტესტ ფაილს ასე root-ში: (root/e2e.test.ts)

import axios from 'axios'
import { someFuncThatCallsAxios } from './service1/src/someFile'

describe('E2E tests', () => {
  it('...', async () => {
    jest.spyOn(axios, 'request').mockResolvedValue('Success')

    await someFuncThatCallsAxios()
  })
})

Axios არ სპეციალურად იმიტირებია... მხოლოდ შემიძლია დავასკვნო, რომ ეს ეხება იმას, რომ ის იღებს axios-ს root-ის node_modules-დან, და როდესაც ფუნქცია service1-დან იძახება, ის მიმართავს იმ პროექტის node_modules-დან მიღებული axios-ს.

არსებობს რაიმე გზა, რომ ამ მონორეპოს სუბდირექტორიის პროექტების დამოკიდებულებები წარმატებით გავაკრაპო?

მე ვცადე რაღაც ამის სტილის გაკეთება:
import axios from './service1/node_modules/axios'
მაგრამ საბოლოოდ მე მხოლოდ ჯესტის შეცდომების სიმრავლე მივიღე, რომლებიც მათი მოგვარების მცდელობისას გამოიკვეთა, რომ ეს არ იყო სწორი გადაწყვეტილება..

მე ვცდილობ შევქმნა E2E ტესტების ნაკრები, რომელიც მოიცავს ყველა პროექტის ფუნქციონირებას ერთჯერადად, ვიდრე ცალკეული ერთეულის ტესტები თითოეული სერვისისთვის, და ჩემი პროექტის სტრუქტურით მე უბრალოდ ვერ ვხვდები, როგორ გავაკეთო ეს.

ყურადღება ნებისმიერ დახმარებას შეფასებული იქნება!