I am working on Angular 9 with Material components. I want to show some values with in mat-select component.
Below is app.component.html
<h2> Angular - Material </h2>
<mat-form-field>
<mat-label>Type</mat-label>
<mat-select >
<mat-option value="string">Small text</mat-option>
<mat-option value="number">Number</mat-option>
<mat-option value="date">Date</mat-option>
</mat-select>
</mat-form-field>
<hr>
My app.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss']
})
export class AppComponent {
title = 'angular-playground';
}
When I run app with ng serve then I can see select box with all options.
But when I try to test this component with karma ng test then I am not getting any options in the select box. I tried inspecting HTML DOM and I am not seeing any option tags with in select and there are no errors in the console.
app.component.spec.ts
import { TestBed, async } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
import { MatFormFieldModule } from '@angular/material/form-field';
import {MatSelectModule} from '@angular/material/select';
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
RouterTestingModule, MatFormFieldModule, MatSelectModule
],
declarations: [
AppComponent
],
}).compileComponents();
}));
it('should create the app', () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app).toBeTruthy();
});
});
This is a so basic angular application and I have a simple component with only select box. Not sure why it is not showing options in test.
Below is my app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MatFormFieldModule } from '@angular/material/form-field';
import {MatSelectModule} from '@angular/material/select';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
AppRoutingModule,
BrowserAnimationsModule,
MatFormFieldModule,
MatSelectModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
Please help me on this.
AppMaterialModule
is, please add its code. Here my guess is that it does not include MatFormFieldModule, MatSelectModule or something else that is needed for the AppComponent. BTW, I'd mock all this stuff out anyway instead of using real material components. – Alexander Leonov