मैं अपने चमेली परीक्षणों में डेटा का मजाक उड़ाने की कोशिश करता हूं।

एक घटक युक्ति में मैं उपयोग करता हूं:

describe('MyComponent', () => {
  const user: User = require('../../mocks/user.json');

मैं एक सर्विस स्टब हूं जिसे मैंने /src/mocks/services/service.stub.ts के अंदर रखा है

import { Observable, of } from 'rxjs';

export const MyServiceStub =  {
  users: require('../../mocks/users.json'),

  getUsers(): Observable<any> {
    return of(this.users);
  }
};

इसके साथ npm रन टेस्ट काम करता है लेकिन ऐप कंपाइल नहीं करता है क्योंकि

src/app/mocks/services/UserServiceStub.ts(4,15) में त्रुटि: त्रुटि TS2304: 'आवश्यकता' नाम नहीं मिल रहा है।

मैंने tsconfig.json के साथ संशोधित करने का प्रयास किया है

"compilerOptions": {
    "resolveJsonModule": true,
    "esModuleInterop": true  
  }

और इसके साथ मोक्स जोंस आयात करें:

import * as users from '../../mocks/users.json';

इसने मेरे सभी आयातों को नष्ट कर दिया जैसे पलजेएस (आयात * पल से पल के रूप में)

मैंने पढ़ा मैं बस जोड़ सकता था

"allowSyntheticDefaultImports": true

लेकिन इससे कोई फायदा नहीं हुआ...

मेरे परीक्षणों में एक json फ़ाइल आयात करने का सही तरीका क्या है?

संपादित करें: मैं यह कहना भूल गया कि आवश्यकता मेरी विशिष्ट फ़ाइलों में काम करता है, यह तब विफल हो जाता है जब मैं इसे /src/mocks/services/MyService.stub.ts में उपयोग करता हूं।

मैंने स्टब्ड सेवा को एक वर्ग के रूप में संशोधित किया और प्रदाता को useValue के बजाय useClass का उपयोग करने के लिए बदल दिया, लेकिन इससे कोई फायदा नहीं हुआ।

6
gyc 8 फरवरी 2019, 12:29

1 उत्तर

सबसे बढ़िया उत्तर

आपके पास कुछ ऐसा हो सकता है:

export const USER_OBJECTS: User[] = [
    {
        'firstName': 'Ana',
        'lastName': '..',
        'fullName': '..',
        'userName': '..',
        'email': '...'
    } as User,
    {
        'firstName': 'Lisa',
        'lastName': '..',
        'fullName': '..',
        'userName': '...',
        'email': '...'
    } as User
];

अपने mocks/users.json.ts में और इसे अपनी स्टब्स फ़ाइल में आयात करें जैसे:

import {USERS_OBJECTS} from '../mocks/users.json.ts';

तब आपकी स्टब सेवा इस तरह दिखेगी:

export const MyServiceStub =  {
  users: require('../../mocks/users.json'),

  getUsers(): Observable<User[]> {
    return of(USER_OBJECTS);
  }
};
3
Mustafa 8 फरवरी 2019, 13:18