我正在尝试使用Jest编写测试。如果计算出的属性给出了这样的工具提示,则已经存在类似的测试测试。现在,我正在尝试测试具有内联引用的属性是否给出了这样的工具提示。在AnalysisList中添加了“ hasInlineRef:false”。它必须为false,否则它将覆盖先前的测试。但是在为测试初始化它时,我想更改它,使hasInlineRef = true,这应该使测试通过。我怀疑这是我对JavaScript的非常有限的了解,无法使我失望。
describe("AnalysisList", () => {
const analysisList: Array<AnalysisListItem> = [{
value: "AAAAAA",
count: 23456,
capped: false,
hasInlineRef: false,
dbValue: "AAAAAA"
}, {
value: "AA",
count: 800,
capped: true,
hasInlineRef: false,
dbValue: "AA"
}];
下面,我想使用hasInlineRef = true初始化AnalysisList。
test("should have inline reference attribute tooltip when attribute is hasInlineRef", () => {
const component = mount(<AnalysisList analysisList={analysisList} onSearch={jest.fn()} />);
const tooltip = component.find("Tooltip").first().simulate("click");
expect(tooltip.props().title).toContain("inlineRefAttributesNoSearch");
});
答案 0 :(得分:1)
一个正在回答的问题“如何更改数组内的单个属性?”答案很简单:
analysisList[0].hasInlineRef = true;
在这里,我们可以看到通过其索引([0]
)访问数组的项,并通过其名称hasInlineRef
访问属性。
需要对数组中的所有项目执行相同操作,这使我们要么使用循环:
for(item in analysisList) {
item.hasInlineRef = true;
}
或使用适用于任何数组的方法:
analysisList.forEach(item => {
item.hasInlineRef = true;
})
有关在JS中使用数组的更多信息:https://www.w3schools.com/js/js_arrays.asp
感谢accessing by reference原始analysisList
的更改,以及我们对它的任何一项进行一次转换。
但是。如果我们从最开始的角度来看,我认为对每个测试用例的测试数据进行变异是一个坏主意。为什么?
如果您不希望在测试代码中拥有巨大的数据负载,则可以将其移动到单独的data_with_some_nuances.json
,another_data_payload.json
中,并借助import
语句将其加载到测试中。 / p>