angular কৌণিক 2 ইউনিট পরীক্ষার-ত্রুটি পেয়ে ত্রুটি 'এনজি:///DynamicTestModule/module.ngfactory.js' লোড করতে ব্যর্থ



angular 6 tutorial (8)

আমার কৌণিক 2 ওয়েবপ্যাক অ্যাপ্লিকেশন রয়েছে, সমস্ত ওয়েবপ্যাক, কর্ণ কনফিগারেশনটি কৌণিক.ইও ওয়েবপ্যাক গাইড হিসাবে তৈরি করা হয়েছে। আমি আট ব্যবহার করছি না আমি আমার উপাদানগুলি পরীক্ষা করার জন্য জুঁই ইউনিট পরীক্ষার বিশেষ লিখছি। প্রথমে আমি অ্যাসিঙ্ক ব্লক ছাড়াই চেষ্টা করেছি, সেক্ষেত্রে ইউনিট টেস্ট কেবলমাত্র ফিক্সচারডেডেক্সট চেঞ্জস () কল, কোডের পরে কার্যকর হবে না যতক্ষণ না কার্যকর হবে। ফিক্সচার.ডিটেক্টট চেঞ্জ কলগুলি অসীম অবরুদ্ধ হয়ে পড়েছে বলে মনে হচ্ছে।

আমি async ব্লকে কোড অন্তর্ভুক্ত করে চেষ্টা করেছি। তারপরে আমি নিম্নলিখিত ত্রুটি পেয়েছি। ত্রুটি: 'এক্সএমএলএইচটিপিআরকুয়েস্ট'-এ' প্রেরণ 'কার্যকর করতে ব্যর্থ:' এনজি: /// ডায়নামিকটেষ্টমডিউল / মডুল.এনজিফ্যাক্টরি.জেএস 'লোড করতে ব্যর্থ

অ্যাসিঙ্ক ছাড়াই কোড

beforeeach(()=> {
TestBed.configureTestingModule({
imports:[],
declaration :[Mycomp],
providers:[{ provide:MyService, useclass:MyMockService}]
});
 fixture=TestBed.createComponent(Mycomp);
 console.log(' before detect changes'):
 fixture.detectChanges():
 console.log('after detect changes');// this is not getting   
    logged .. karma shows 0 of 1 executed successfully

 });

অ্যাসিঙ্ক সহ

  beforeeach(async(()=> {
 TestBed.configureTestingModule({
  imports:[],
  declaration :[Mycomp],
  providers:[{ provide:MyService,       useclass:MyMockService}]
  });
   fixture=TestBed.createComponent(Mycomp);
    fixture.detectChanges():
  }));

ত্রুটি পেয়ে ডায়নামেস্টেস্টমডিউল / মডিউল.এনজি ফ্যাক্টরি.জেএস লোড করতে ব্যর্থ


Answer #1

--sourcemaps=false দিয়ে পরীক্ষা চালানো --sourcemaps=false চুপ করে ব্যর্থ করবে না তবে পরিবর্তে ত্রুটি সম্পর্কে কিছু বিশদ দেবে।


Answer #2

আমি গতকাল নিজেই এই ইস্যুতে ছুটে এসেছি। সমস্যাটি হ'ল আমার উপাদান উপাদানটিতে আমার একটি ইনপুট () সম্পত্তি ছিল যা আমি পরীক্ষায় সেট করছিলাম না। সুতরাং উদাহরণস্বরূপ, আমার-উপাদান.ts এ:

@Component({
  selector: 'my-component'
})
export class MyComponent {
  @Input() title: string;
}

এবং আমার-উপাদান.spec.ts:

beforeEach(() => {
  fixture = TestBed.createComponent(MyComponent);
  component = fixture.componentInstance;
  component.title = 'Hello there!' // <-- this is required!
  fixture.detectChanges();
});

অথবা আপনি কোথাও উপাদান একটি ডিফল্ট মান প্রদান করতে পারে। যেভাবেই হোক, কোনও ইনপুট সেট না করা থাকলে পরীক্ষাটি ক্র্যাশ হয়ে যাবে এবং আপনি সেই অনাদায়ী ত্রুটি পাবেন।

দ্রষ্টব্য: ng test -sm=false চালানো সমস্যার কারণ হিসাবে আসল ত্রুটি বার্তা দেবে। ক্রেডিট: https://.com/a/45802115/61311


Answer #3

আমি ঠিক এই সমস্যা ছিল। এটি আমার * এনজিআইএফ চেকগুলির একটিতে আমার উপাদানটিতে একটি সাধারণ নাল রেফারেন্স ত্রুটি হিসাবে দেখা গেছে।

আমি এনজি সার্ভ চালানোর পরামর্শ দিচ্ছি এবং কোনও ত্রুটি ছাড়াই ব্রাউজারে উপাদানটি পরীক্ষা করা কাজটি পরীক্ষা করা হচ্ছে বা আরও দরকারী ত্রুটি বার্তা পেতে কেবল এনজি টেস্ট চালাও - সোর্স-ম্যাপ = মিথ্যা


Answer #4

আমারও এই সমস্যা ছিল এবং এটি ত্রুটিযুক্ত বিদ্রূপযুক্ত ডেটার কারণে। আমার উপাদানটিতে আমার একটি পরিষেবা ছিল যা একটি HTTP কল করেছিল।

এর মতো কিছু: ( পরিষেবা কোড )

getData() {
   return this.http.get(obj);
}

উপাদানটিতে আমি এই ফাংশনটি কল করেছি এবং এতে সদস্যতা নিয়েছি: ( উপাদান কোড )

this.service.getData().subscribe((data) => {
  this.componentData = data.things; //**<=== part that broke everything**
}, (error) => {
  console.log(error);
});

সমাধান:

যখন আমি পরিষেবাটির কাজটি উপহাস করলাম তখন আমি সেই ডেটা ফিরিয়ে দিতে ব্যর্থ হয়েছি যাতে বৈশিষ্ট্যযুক্ত things । এটিই XMLHttpRequest ব্যর্থতার কারণ হয়ে দাঁড়িয়েছে, আমি কৌণিক অনুমান করি যে এটির মতো দেখে মনে হচ্ছে ত্রুটি ঘটেছে যেন এটি HTTP অনুরোধ। নিশ্চিত হওয়া যে আমি যে কোনও উপহাসকৃত HTTP অনুরোধগুলিতে সঠিক বৈশিষ্ট্যগুলি ফিরিয়েছি তা সমস্যার সমাধান করেছে।

আশা করি এটি পরিষ্কার হয়ে যাবে। মক বাস্তবায়নের জন্য নীচে কোড দেওয়া আছে।

( উপাদান.স্পেক )

function fakeSubscribe(returnValue,errorValue) {
  return {
    subscribe:function(callback,error){
      callback(returnValue);
      error(errorValue);
    }
  }
}



 class MockService {
      getData() {
        var fakeData = {
          things:[]
        }
        return fakeSubscribe(fakeData,0);
      }
   }

Answer #5

এটি আমি সবচেয়ে কৃত্রিম ত্রুটি বার্তা যা আমি কখনও কৌণিকের মুখোমুখি হয়েছি।

আমার ক্ষেত্রে এটি প্রেরণের সাথে কিছুই করার ছিল না, এক্সএমএলএইচটিপিআরকুয়েস্টের সাথে কিছুই করার ছিল না - বার্তাটি অনুসরণ করার চেষ্টা করার সময় আপনি যে স্তরের অনুমান করতে চান তা কমপক্ষে নয়।

এটি এনজিআরএক্স / স্টোর নামে একটি শ্রেণীর উপহাস করার বিষয়েও ছিল। আমি একটি ধারকটিতে দুটি পর্যবেক্ষণযোগ্য পদ্ধতি চালু করেছি যা এর আগে আমার মক-আপ শ্রেণিতে অন্তর্ভুক্ত ছিল না এবং যখন আমি সেগুলি ব্যবহার শুরু করি তখন আমি তা করতে ভুলে গিয়েছিলাম। একবার মক-আপে যুক্ত হয়ে গেলে ত্রুটিটি চলে যায়।

... XMLHttpRequest এর অর্থ যাই হোক না কেন তার থেকে 'প্রেরণ' কার্যকর করতে সক্ষম হওয়ায় কর্মীকে খুশি করা।


Answer #6

প্রকৃতপক্ষে ত্রুটিটি কী কারণে ঘটছে তা সন্ধান করতে উত্স মানচিত্রগুলি অক্ষম করুন:

কৌণিক-ক্লিপ> = v6.x এর জন্য:

ng test --source-map=false

কৌণিক-ক্লিপ v1.x এর জন্য:

ng test -sm=false

এরপরে আপনি আরও একটি ভাল ত্রুটি দেখতে পাবেন, যেমন ত্রুটির কারণ হিসাবে প্রকৃত উত্স ফাইলে "অপরিজ্ঞাতকৃত 'x' প্রবন্ধটি পড়া যায় না"। কোনও কারণে, এখন পরীক্ষার সময় সোর্সম্যাপ সহ একটি ত্রুটি রয়েছে এবং আপনি কেবল এই ক্রিপ্টিক ত্রুটি পান get


Answer #7

পরের দিন আমি একই ত্রুটিটি দ্বারা কামড়েছি - এই সময় এইচটিএমএল ফাইলটিতে সমস্যাটি সমাহিত করা হয়েছিল। *ngIf জন্য একটি সাধারণ অ্যারে দৈর্ঘ্যের পরীক্ষা ব্যবহার করা

<ng-container *ngIf="myArray.length > 0">

মধ্যে রিফ্যাক্টর করা ছিল

<ng-container *ngIf="myArrayNotEmpty">

যেমন একটি গেটর সহ:

get myArrayNotEmpty(){
  return this.myArray && this.myArray.length > 0;
}

আমি কিছুটা বিরক্ত হলেও এই ধরণের বিভিন্ন কারণ একটি অত্যন্ত বিভ্রান্তিকর এবং অপ্রয়োজনীয় বার্তা দ্বারা আবৃত।


Answer #8

আমার ক্ষেত্রে, আমার মক পরিষেবাটি এনজিওইনাইট পদ্ধতিতে উপাদান দ্বারা অ্যাক্সেস করা কিছু পাবলিক ভেরিয়েবলগুলি অনুপস্থিত ছিল।





karma-runner