testing - اختبار angular2: لا يمكن ربطه بـ "ngModel" لأنه ليس خاصية معروفة لـ "الإدخال"



angular-cli angular2-testing (1)

أحاول اختبار angular2 ربط ثنائي الاتجاه input التحكم. هنا هو الخطأ:

Can't bind to 'ngModel' since it isn't a known property of 'input'.

app.component.html

<input id="name" type="text" [(ngModel)]="name" />
<div id="divName">{{name}}</div>

app.component.ts

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html'  
})
export class AppComponent implements OnInit {
  name: string;    
}

app.component.spec.ts

import { TestBed, async } from '@angular/core/testing';
import { AppComponent } from './app.component';
import { AppService } from './app.service';
describe('App: Cli', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent
      ],
      providers:[AppService]
    });
  });

  it('divName', async(() => {
    let fixture = TestBed.createComponent(AppComponent);
    let comp = fixture.componentInstance;
    comp.name = 'test';
    fixture.detectChanges();

    let compiled = fixture.debugElement.nativeElement;    
    expect(compiled.querySelector('divName').textContent).toContain('test');
  }));  
});

تحتاج إلى استيراد FormsModule إلى TestBed TestBed.

import { FormsModule } from '@angular/forms';

TestBed.configureTestingModule({
  imports: [ FormsModule ],
  declarations: [
    AppComponent
  ],
  providers:[AppService]
});

ما تقوم به مع TestBed هو تكوين NgModule من البداية لبيئة الاختبار. يتيح لك ذلك إضافة ما هو مطلوب للاختبار فقط دون وجود متغيرات خارجية غير ضرورية قد تؤثر على الاختبار.





angular2-testing