如何在 Angular 2 中为单元测试创建新事件?
How to create new event for unit testing in Angular 2?
您好,我正在为我的 angular 代码编写单元测试用例。我正在尝试更新 gridview 中的文本框。下面是我的 gridview 代码。
<input *ngIf="editing[rowIndex + '-scopevalue']" class="inline-editor" autofocus (blur)="updateValue($event, 'scopevalue', value, rowIndex)" type="text" [value]="value" />
以下函数执行更新。
updateValue(event, cell, cellValue, rowIndex) {
this.editing[rowIndex + '-' + cell] = false;
this.rows[rowIndex][cell] = event.target.value;
this.rowsCache[rowIndex][cell] = event.target.value;
this.scopeEdit = this.rows[rowIndex];
this.updateScope();
}
我正在写下面的单元测试用例来检查上面的代码。
it('update scope name value', () => {
var row = component.rows[0];
let cell = 'scopevalue';
let cellValue = row.scopevalue;
let rowIndex = 0;
component.updateValue('/bmw', cell, cellValue, rowIndex);
});
在上述方法中,第一个参数应该是事件。有人可以帮我如何创建事件吗?任何帮助,将不胜感激。谢谢
您可以创建一个 event.target.value
的硬编码值,并在 updateValue
函数中验证 rowsCache[rowIndex][cell]
是否具有该值。
您可以使用一个简单的对象模拟事件,如下所示:
const event = { target: { value: 42 }};
component.updateValue(event, cell, cellValue, rowIndex);
如果您的方法的参数被键入为事件对象:
const mockEvent: Event = <Event><any>{
target: {
value: 42
}
};
component.updateValue(mockEvent, cell, cellValue, rowIndex);
您可以先将其转换为未知,然后再转换为这样的事件:
// arrange
const file = {
name: 'image.png',
size: 50000,
type: 'image/png'
} as File;
const mockEvent = {
target: {
files: [file]
}
} as unknown as Event;
// act
component.onInputChange(mockEvent);
// assert
expect(component.files).toEqual([file]);
您好,我正在为我的 angular 代码编写单元测试用例。我正在尝试更新 gridview 中的文本框。下面是我的 gridview 代码。
<input *ngIf="editing[rowIndex + '-scopevalue']" class="inline-editor" autofocus (blur)="updateValue($event, 'scopevalue', value, rowIndex)" type="text" [value]="value" />
以下函数执行更新。
updateValue(event, cell, cellValue, rowIndex) {
this.editing[rowIndex + '-' + cell] = false;
this.rows[rowIndex][cell] = event.target.value;
this.rowsCache[rowIndex][cell] = event.target.value;
this.scopeEdit = this.rows[rowIndex];
this.updateScope();
}
我正在写下面的单元测试用例来检查上面的代码。
it('update scope name value', () => {
var row = component.rows[0];
let cell = 'scopevalue';
let cellValue = row.scopevalue;
let rowIndex = 0;
component.updateValue('/bmw', cell, cellValue, rowIndex);
});
在上述方法中,第一个参数应该是事件。有人可以帮我如何创建事件吗?任何帮助,将不胜感激。谢谢
您可以创建一个 event.target.value
的硬编码值,并在 updateValue
函数中验证 rowsCache[rowIndex][cell]
是否具有该值。
您可以使用一个简单的对象模拟事件,如下所示:
const event = { target: { value: 42 }};
component.updateValue(event, cell, cellValue, rowIndex);
如果您的方法的参数被键入为事件对象:
const mockEvent: Event = <Event><any>{
target: {
value: 42
}
};
component.updateValue(mockEvent, cell, cellValue, rowIndex);
您可以先将其转换为未知,然后再转换为这样的事件:
// arrange
const file = {
name: 'image.png',
size: 50000,
type: 'image/png'
} as File;
const mockEvent = {
target: {
files: [file]
}
} as unknown as Event;
// act
component.onInputChange(mockEvent);
// assert
expect(component.files).toEqual([file]);