gpt4 book ai didi

angular - 我如何通过在我的规范文件中创建 angular2 组件的新实例来调用方法?

转载 作者:太空狗 更新时间:2023-10-29 17:57:52 26 4
gpt4 key购买 nike

我有 myComponent,其中包含 method1method2ngOnInit

export class myComponent  {

//input and output declaration

public myVar;
constructor( @Inject(ElementRef) private elementRef: ElementRef) {

}
public method1() { return this.myVar.val().toUpperCase(); }
public method2() { return this.myVar .val(""); }
public ngOnInit() {

this.myVar = //calling jQuery autocomplete method which in turns calls $.JSON () to get data .
//
}

这是该组件的 html 模板:

<input type="text" value="{{symbol}}" size="{{size}}" maxlength="94"><span></span>

这是我的规范文件。我需要确保插入的任何值都转换为大写。

describe('myComponent Component', () => {
beforeEachProviders(() => [myComponent, provide(ElementRef, { useValue: new MockElementRef() })]);
class MockElementRef implements ElementRef {
nativeElement = {};
}

it('should check uppercase conversion',inject([TestComponentBuilder, myComponent , ElementRef], (tcb:TestComponentBuilder) => {
tcb.createAsync(myComponent)
.then((fixture) => {
const element = fixture.nativeElement.firstChild;
element.setAttribute("value", "g");
element.setAttribute("size", 12); //setting size and value for input element
var getMyElem= $(element);

let ac= new myComponent(fixture.nativeElement);

ac.ngOnInit(); //undefined
//ac.method1(); unable to call
console.log(myComponent.prototype.method1()); //it calls value method but outputs cannot read val of undefined
expect(element.getAttribute("value")).toBe("G");

});
}));
});

我希望将值“g”设置为等于“g”,并检查调用 method1() 后是否返回“G”。

问题:

1.在创建 myComponent 实例时是否将 fixture.nativeElement 作为参数传递?
2. 另外,如果你能帮我测试在组件内部调用的 $.JSON 方法。如何模拟 JSON 请求?

最佳答案

您不会通过 new SomeComponent() 创建组件实例。组件需要由 Angular 创建,例如 tcb.createAsync(SomeComponent)。如果 myComponentAutocompleteComponent 的模板中,则从 fixture 中查询它。

关于angular - 我如何通过在我的规范文件中创建 angular2 组件的新实例来调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37563086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com