কৌণিক 2 ইউনিট টেস্ট: 'বর্ণনা' নামটি পাওয়া যায় না


213

আমি এই টিউটোরিয়ালটি কৌনিক.ও.

যেমন তারা বলেছিল, আমি ইউনিট পরীক্ষা তৈরি করতে নায়ক.স্পেক.এসটি ফাইল তৈরি করেছি:

import { Hero } from './hero';
describe('Hero', () => {
  it('has name', () => {
    let hero: Hero = {id: 1, name: 'Super Cat'};
    expect(hero.name).toEqual('Super Cat');
  });
  it('has id', () => {
    let hero: Hero = {id: 1, name: 'Super Cat'};
    expect(hero.id).toEqual(1);
  });
});

ইউনিট টেস্টগুলি কবজির মতো কাজ করে। সমস্যাটি হ'ল: আমি কিছু ত্রুটি দেখছি, যা টিউটোরিয়ালে উল্লেখ করা হয়েছে:

আমাদের সম্পাদক এবং সংকলক অভিযোগ করতে পারেন যে তারা কী জানেন না it এবং expectকারণ তারা জাইমিন বর্ণনা করে এমন টাইপিং ফাইলগুলির অভাব রয়েছে। ক্ষতিকারক অভিযোগগুলি আপাতত এড়াতে পারি কারণ সেগুলি নিরীহ।

তারা সত্যই তা উপেক্ষা করেছিল। যদিও এই ত্রুটিগুলি নির্দোষ নয়, আমার আউটপুট কনসোলে যখন আমি সেগুলির একগুচ্ছ পেয়েছি তখন এটি ভাল লাগে না।

আমি যা পাই তার উদাহরণ:

নাম 'বর্ণনা' খুঁজে পাচ্ছেন না।

নাম 'এটি' খুঁজে পাচ্ছেন না।

'প্রত্যাশা' নামটি পাওয়া যায় না।

আমি এটি ঠিক করতে কী করতে পারি?


উত্তর:


386

আমি আশা করি আপনি ইনস্টল করেছেন -

npm install --save-dev @types/jasmine

তারপরে hero.spec.tsফাইলটির শীর্ষে নীচে আমদানি করুন -

import 'jasmine';

এটি সমস্যার সমাধান করা উচিত।


3
প্রয়োজনীয় টাইপস্ক্রিপ্ট সংস্করণের উপর নির্ভর করে আপনার পূর্ববর্তী সংস্করণ ইনস্টল করতে হতে পারে। উদাহরণস্বরূপ, আমি বর্তমানে টাইপ স্ক্রিপ্ট v2.0.9 ব্যবহার করে যা আয়নিক ভি 2.2.1.1 এর জন্য আমার ইনস্টল করা দরকার @types/jasmine@2.5.41। অন্যথায় আপনি এই সংকলন ত্রুটি দেখতে পাবেন ।
টনি ও'আগান

18
আপনি কেবলমাত্র এর পার্শ্ব প্রতিক্রিয়াগুলির জন্য মডিউলটি আমদানি করতে পারেন:import 'jasmine';
ক্যামোলিন 3

8
কী import {} from 'jasmine';আসলে কি? এটি কি হিসাবে একই import 'jasmine'?
তেত্রদেব

2
অ্যাঙ্গুলার 6.0.3 এ: আমি সবেমাত্র "জুঁই থেকে আমদানি imported" আমদানি করেছি এবং এটি আবার কাজ করেছে
এডুয়ার্ডো কর্ডেরিও

2
@ আয়েসদে আপনি পিএস এর কোন সংস্করণটি চালান? আমি কোনও উদ্ধৃতি চিহ্ন ছাড়াই কমান্ডটি কার্যকর করেছি এবং এটি ঠিকভাবে চলে গেছে।
কনরাড ভিল্টারস্টেন

162

টাইপসক্রিপ্ট @ ২.০ বা তারপরে আপনি এর সাথে প্রকারগুলি ইনস্টল করতে পারেন:

npm install -D @types/jasmine

তারপরে এই typesবিকল্পটি ব্যবহার করে স্বয়ংক্রিয়ভাবে প্রকারগুলি আমদানি করুন tsconfig.json:

"types": ["jasmine"],

এই import {} from 'jasmine';দ্রবণটির প্রতিটি স্পেক ফাইলের প্রয়োজন হয় না ।


9
Tsconfig.json (এই সময়ে v2.1) এর জন্য টাইপস্ক্রিপ্ট ডক্সে, "types": ["jasmine"]লাইনটি আর যুক্ত করার প্রয়োজন নেই। "ডিফল্টরূপে সমস্ত দৃশ্যমান" @ টাইপস "প্যাকেজগুলি আপনার সংকলনে অন্তর্ভুক্ত রয়েছে n প্রকারের /, ../../ নোড_মডিউলগুলি / @ টাইপস, এবং আরও কিছু। "
ভোলবেন

12
@ ভোলবেন আমি জানি, তবে কোনও কারণে nodeএবং jasmineপ্রকারগুলি সনাক্ত করা যায়নি। কমপক্ষে এটি আমার পক্ষে কাজ করে না এবং আমি টাইপস্রিপ্ট @2.1.5 ব্যবহার করছি
হু

2
। এই সমাধান আমার জন্য কাজ করে না :(, দুঃখিত আমি এটা ব্যবহার করা ang-app/e2e/tsconfig.jsonআমি প্রতি JSON স্তরের এটা চেষ্টা আপনি কি দয়া করে আরো বিস্তারিত জানার যোগ করা যায়নি।?
Sergii

ওয়েবপ্যাক ব্যবহার করার সময় এটি কাজ করবে না - এই ক্ষেত্রে আসল পাঠাগারটি সরবরাহ করা দরকার - 'জুঁই' থেকে আমদানি {the লাইব্রেরিটির দিকে ঠেলে দেয়
বোগদান

এটি আমার পক্ষে কাজ করেছিল, তবে আমাকে আমার বৈশ্বিক
টাইপসক্রিপ্টটি

27
npm install @types/jasmine

কিছু মন্তব্যে উল্লিখিত হিসাবে এর "types": ["jasmine"]আর দরকার নেই, সমস্ত @typesপ্যাকেজ স্বয়ংক্রিয়ভাবে সংকলনে অন্তর্ভুক্ত করা হয়েছে (যেহেতু আমার মনে হয় v2.1)।

আমার মতে সবচেয়ে সহজ সমাধানটি হল আপনার tsconfig.json এর পরীক্ষার ফাইলগুলি বাদ দেওয়া যেমন:

"exclude": [
    "node_modules",
    "**/*.spec.ts"
]

এটি আমার পক্ষে কাজ করে।

অফিসিয়াল tsconfig ডক্সে আরও তথ্য ।


3
শুধু একটি নোট: নতুন কৌণিক প্রকল্প src/tsconfig.app.json, src/tsconfig.spec.jsonএবং tsconfig.json। উল্লিখিত "বাদ দিন" বিভাগটি প্রথম অংশের অংশ। "types": [ "jasmine" ]২ য় অংশ।
মার্টিন স্নাইডার

2
নোট করুন যে ভিএস কোডে আপনি আপনার নির্দিষ্ট ফাইলগুলিতে রেফারেন্সগুলি সন্ধানের ক্ষমতা হারাবেন, কারণ এগুলি প্রকল্পের অংশ হিসাবে বিবেচিত হবে না।
ম্লেউ

@ ম্লেইউ আমিও একই সমস্যার মুখোমুখি হচ্ছি। আপনি এই সমস্যাটি কীভাবে ঠিক করলেন? প্রতিবার পরীক্ষার কেসটি লেখার সময়, আমাকে excludeব্লক থেকে স্পেক ফাইলের প্যাটার্নটি সরিয়ে ফেলতে হবে ।
শিশির আঁশুমান

@ শিশিরআনশুমান: আমি কোনও সমাধান খুঁজে পাইনি এবং প্রকল্প শেষ না হওয়া পর্যন্ত এই সীমাবদ্ধতার সাথে বেঁচে থাকতে হয়েছিলাম।
mleu

ওহ। ইস্যু নেই। আমার প্রকল্পটিতে কাজের হিসাবে, আমি সিস্কনফিগের excludeব্লক থেকে স্পেক ফাইলের প্যাটার্নটি সরিয়েছি । তারপরে আমি ব্লকটিতে tsconfig.build.jsonস্পেক ফাইলের প্যাটার্ন যুক্ত একটি নতুন ফাইল তৈরি করেছি exclude। এখন, আমার ts-loaderবিকল্পগুলিতে (ওয়েবপ্যাক.কনফিগ) আমি ব্যবহার করছি tsconfig.build.json। এই কনফিগারেশনের সাহায্যে মডিউলগুলি পরীক্ষার ফাইলগুলিতে সমাধান করা হচ্ছে এবং সার্ভার তৈরি বা তৈরি করার সময় পরীক্ষার ফাইলগুলি বাদ দেওয়া হয়েছে।
শিশির আঁশুমান

13

জুঁইয়ের জন্য আপনার টাইপগুলি ইনস্টল করতে হবে। ধরে নিই যে আপনি টাইপস্ক্রিপ্ট 2 এর তুলনামূলকভাবে সাম্প্রতিক সংস্করণে রয়েছেন যা আপনার করা উচিত:

npm install --save-dev @types/jasmine

8

টাইপসক্রিপ্ট @ ২.০ এর সাথে বা পরে আপনি এনপিএম ইনস্টল সহ প্রকারগুলি ইনস্টল করতে পারেন

npm install --save-dev @types/jasmine

তারপরে tsconfig.json- এ টাইপরুটস বিকল্পটি ব্যবহার করে স্বয়ংক্রিয়ভাবে প্রকারগুলি আমদানি করুন ।

"typeRoots": [
      "node_modules/@types"
    ],

এই দ্রবণটির জন্য 'জুঁই' থেকে আমদানি {; প্রয়োজন হয় না; প্রতিটি বৈশিষ্ট ফাইল।


1
দুর্ভাগ্যক্রমে যে কাজ করে না। এটি এখনও স্পেক ফাইলগুলিতে ত্রুটিগুলি দেখায়
dave0688

3

@ পেস তার উত্তরে যা লিখেছেন তার সাথে এই সমস্যার সমাধান সংযুক্ত রয়েছে । যাইহোক, এটি সবকিছু ব্যাখ্যা করে না, আপনি যদি আপত্তি না করেন, আমি নিজেই এটি লিখব।

সমাধান:

এই লাইনটি যুক্ত করা হচ্ছে:

///<reference path="./../../../typings/globals/jasmine/index.d.ts"/>

hero.spec.tsফাইল সংশোধন সমস্যা শুরুতে । পাথ typingsফোল্ডারে নিয়ে যায় (যেখানে সমস্ত টাইপ সঞ্চিত থাকে)।

টাইপগুলি ইনস্টল করতে typings.jsonআপনার নীচের বিষয়বস্তু সহ আপনার প্রকল্পের মূলের ফাইল তৈরি করতে হবে:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160807145350"
  }
}

এবং চালান typings install(যেখানে typingsএনপিএম প্যাকেজ রয়েছে)।


3
এটি এটি করার মানহীন উপায়। ডিফল্ট tslint বিধিগুলি রেফারেন্স পাথগুলিকে আটকাবে। নোড_মডিউলগুলি দেখানোর জন্য tsconfig ফাইলটি ব্যবহার করুন
ফ্ল্যাভারস্পেকপ

3

আমার ক্ষেত্রে, সমাধানটি typeRootsআমার মধ্যে থেকে মুছে ফেলা হয়েছিলtsconfig.json

আপনি যেমন টাইপস্ক্রিপ্ট ডকটিতে পড়তে পারেন

যদি টাইপরুটগুলি নির্দিষ্ট করা থাকে তবে কেবল টাইপরুটগুলির অন্তর্ভুক্ত প্যাকেজগুলি অন্তর্ভুক্ত করা হবে।


3

আমি আজকের মতো সাম্প্রতিকতম অবধি রয়েছি এবং এর সমাধানের সবচেয়ে ভাল উপায়টি হ'ল কিছু না করা ... typeRootsনা typesনা excludeনা, includeসমস্ত ডিফল্ট কেবল ঠিক কাজ করছে বলে মনে হচ্ছে। আসলে আমি এগুলি সমস্ত অপসারণ না করা পর্যন্ত এটি আমার পক্ষে ঠিক কাজ করে না। আমার ছিল:

"exclude": [
    "node_modules"
]

তবে এটি ডিফল্টে রয়েছে তাই আমি এটি সরিয়ে দিয়েছি।

আমার ছিল:

"types": [
    "node"
]

কিছু সংকলক সতর্কতা অতীত পেতে। তবে এখন আমি সেটিকেও সরিয়ে দিয়েছি।

যে সতর্কতাটি হওয়া উচিত নয় তা হ'ল: error TS2304: Cannot find name 'AsyncIterable'. থেকেnode_modules\@types\graphql\subscription\subscribe.d.ts

যা খুব অসুবিধাগুলি তাই আমি এটি এসএনসিফাইগ এ করেছি যাতে এটি এটি লোড করে দেয়:

"compilerOptions": {
    "target": "esnext",
}

যেহেতু এটি মূল সংস্থায় রয়েছে। আমি এটি সরাসরি ব্যবহার করছি না তাই এখানে এখনও সামঞ্জস্যতা নিয়ে কোনও উদ্বেগ নেই। আশা করি এটি পরে আমাকে জ্বলবে না।


আপনি যোগ করতে প্রয়োজন হবে না "types": ["node"]tsconfig.jsonকিন্তু আপনি এই ধরনের যোগ করা উচিত tsconfig.app.json! আমার মনে হয় আপনার আবার এই সতর্কতা থাকা উচিত নয়। আপনি রাখতে পারেন "target": "es5"বা "target": "es6"এখন রাখতে পারেন ।
ক্রিস্টোফ শেভালিয়ের

2

লারনা মনো- রেপোতে যেখানে বেশ কয়েকটি নোড_মডিউল রয়েছে সেখানে কেবলমাত্র @ টাইপগুলি বেছে নেওয়ার জন্য কেবল নিম্নলিখিতগুলি করতে হয়েছিল ।

npm install -D @types/jasmine

তারপরে প্রতিটি মডিউল বা অ্যাপ্লিকেশনটির প্রতিটি tsconfig.file এ

"typeRoots": [
  "node_modules/@types",
  "../../node_modules/@types" <-- I added this line
],

ডিফল্টরূপে সমস্ত দৃশ্যমান "@ টিপস" প্যাকেজগুলি আপনার সংকলনের অন্তর্ভুক্ত। নোড_মডিউল / @ যে কোনও এনক্লোজিং ফোল্ডারের ধরণের প্যাকেজগুলি দৃশ্যমান হিসাবে বিবেচিত হয়; বিশেষত, এর অর্থ ./node_modules/@tyype/, ../node_modules/@tyype/, ../../node_modules/@tyype/, এবং এর মধ্যে থাকা প্যাকেজগুলির অর্থ। অফিসিয়াল ডকুমেন্টেশন
ক্রিস্টোফ শেভালিয়ার

1

সংকলনের সময় টাইপস্ক্রিপ্ট সংকলক সমস্ত দৃশ্যমান প্রকারের সংজ্ঞা ব্যবহার করতে, ক্ষেত্র typesথেকে বিকল্পটি পুরোপুরি অপসারণ করা উচিতcompilerOptionstsconfig.json ফাইলের ।

ক্ষেত্রটিতে কিছু typesএন্ট্রি উপস্থিত থাকলে এই একই সমস্যা দেখা দেয়compilerOptionsjest অ্যান্ট্রি অনুপস্থিত থাকলে ।

তাই যাতে সমস্যাটি সমাধানের জন্য, compilerOptionsআপনার ক্ষেত্র tscongfig.jsonপারেন অন্তর্ভুক্ত করা উচিত jestমধ্যে typesবা এরিয়া পরিত্রাণ পেতে typescomnpletely:

{
  "compilerOptions": {
    "esModuleInterop": true,
    "target": "es6",
    "module": "commonjs",
    "outDir": "dist",
    "types": ["reflect-metadata", "jest"],  //<--  add jest or remove completely
    "moduleResolution": "node",
    "sourceMap": true
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}

এটি আমার জন্য কাজ করেন, আমার কাছে তা থাকত google map typesমধ্যে typesবিকল্প। বিকল্পটি সম্পূর্ণরূপে অপসারণ করার পরে, এটি দুর্দান্ত কাজ করেছে।
প্রীতেশ অগ্রবাল

1

"টাইপস্ক্রিপ্ট" - এ আমার জন্য কী কাজ করে তার জন্য আমি কেবল উত্তর যুক্ত করব: "৩.২.৪" আমি বুঝতে পেরেছিলাম যে নোড_মডিউল / @ টাইপগুলিতে জুঁই ts3.1 এর জন্য জুঁই টাইপের অধীনে একটি ফোল্ডার রয়েছে তাই এই পদক্ষেপগুলি এখানে রয়েছে:

  • প্রকারের জুঁই ইনস্টল করুন npm install -D @types/jasmine
  • Tsconfig.json জুঁই / ts3.1 এ যুক্ত করুন

    "typeRoots": [ ... "./node_modules/jasmine/ts3.1" ],

  • ধরণের জুঁই যোগ করুন

    "types": [ "jasmine", "node" ],

দ্রষ্টব্য: এর আর দরকারimport 'jasmine';নেই।


1

আমার ক্ষেত্রে, আমি এই ত্রুটিটি পেয়েছিলাম যখন আমি অ্যাপটি পরিবেশন করি, পরীক্ষার সময় নয়। আমি বুঝতে পারিনি যে আমার tsconfig.app.json ফাইলটিতে আমার একটি আলাদা কনফিগারেশন সেটিংস রয়েছে।

আমার আগে এটি ছিল:

{
  ...
  "include": [
    "src/**/*.ts"
  ]
}

.spec.tsঅ্যাপটি পরিবেশন করার সময় এটি আমার সমস্ত ফাইল অন্তর্ভুক্ত ছিল । আমি include property toবাদ পড়েছি changed এবং এর মতো সমস্ত পরীক্ষার ফাইলগুলি বাদ দিতে একটি রেজেক্স যুক্ত করেছি:

{
  ...
  "exclude": [
    "**/*.spec.ts",
    "**/__mocks__"
  ]
}

এখন এটি প্রত্যাশার মতো কাজ করে।


0

আমদানির দিকে তাকান সম্ভবত আপনার একটি চক্র নির্ভরতা রয়েছে , এটি আমার ক্ষেত্রে ত্রুটি ছিল, import {} from 'jasmine';ব্যবহারটি কনসোলে ত্রুটিগুলি সমাধান করবে এবং কোডটি সংকলনীয় করে তুলবে তবে শয়তানের মূলকে মুছে ফেলবে না (আমার ক্ষেত্রে চক্র নির্ভরতা)।


0

আমি কৌনিক 6, টাইপস্ক্রিপ্ট 2.7 এ আছি এবং আমি ইউনিট পরীক্ষার জন্য জাস্ট ফ্রেমওয়ার্ক ব্যবহার করছি। আমি ভিতরে @types/jestইনস্টল এবং যোগ ছিলtypeRootstsconfig.json

তবে এখনও নীচের প্রদর্শন ত্রুটি রয়েছে (যেমন: টার্মিনালে কোনও ত্রুটি নেই)

নামের বর্ণনা খুঁজে পাচ্ছে না

এবং আমদানি যুক্ত করা হচ্ছে:

import {} from 'jest'; // in my case or jasmine if you're using jasmine

প্রযুক্তিগতভাবে কিছু করে না, তাই আমি ভেবেছিলাম যে কোথাও এই সমস্যা তৈরি করে এমন একটি আমদানি রয়েছে, তবে আমি খুঁজে পেলাম, যদি ফাইলটি মুছুন

tsconfig.spec.json

মধ্যে src/ ফোল্ডারের আমার জন্য সমস্যার সমাধান। যেমন @ টাইপগুলি মূল টাইপগুলির অভ্যন্তরের আগে আমদানি করা হয়।

আমি আপনাকে অনুরোধ করছি এবং এই ফাইলটি মুছুন, কোনও কনফিগারেশন ভিতরে নেই। (পিএস: আপনি যদি আমার মতো একই অবস্থায় থাকেন)


0

যদি ত্রুটিটি .specs ফাইল অ্যাপ / app.componal.spec.ts (7,3) এ থাকে: ত্রুটি টিএস 2304: 'পূর্বেচ' নামটি খুঁজে পাওয়া যায় না।

আপনার ফাইলের শীর্ষে এটি যুক্ত করুন এবং এনএমপি ইনস্টল করুন rxjs

'rxjs' থেকে {ব্যাপ্তি import আমদানি করুন; 'rxjs / অপারেটর' থেকে {মানচিত্র, ফিল্টার import আমদানি করুন;

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.