【发布时间】:2017-12-30 07:59:03
【问题描述】:
所以我有一个需要输入的指令:
@Directive({
selector: '[my-directive]'
})
export class MyDirective {
@Input('some-input')
public someInput: string;
}
如您所见,输入应该是string 值。现在,我想为这个指令写一个测试,我想测试输入是否满足string类型:
describe('MyDirective', () => {
let fixture: ComponentFixture<DummyComponent>;
let dummy: DummyComponent;
let directive: DebugElement;
beforeEach(async(() => {
TestBed
.configureTestingModule({
imports: [
MyModule.forRoot()
],
declarations: [
DummyComponent
]
})
.compileComponents();
fixture = TestBed.createComponent(DummyComponent);
dummy = fixture.componentInstance;
directive = fixture.debugElement.query(By.directive(MyDirective));
fixture.detectChanges();
}));
it('should satisfy only a string input and error on other inputs', () => {
// How to test?
});
});
@Component({
selector: 'dummy',
template: `
<div my-directive [some-input]="'just-a-string-value'"></div>
`
})
export class DummyComponent implements OnInit {
}
如何测试@Input 值是否属于正确类型?
【问题讨论】:
-
这个link 可能会有所帮助
-
directive 应该是 DebugElement[] ,要访问这个属性只需 typeof(directives[0].attributes.someInput).toLowerCase() == "string"
标签: angular unit-testing typescript testing jasmine