我有一个私有方法,我在其中调用一个在服务中定义的方法来获取一些数据。该服务是一个类
Angular2中的一些代码
function dataToTable(data) {
const table = document.createElement("table")
for (let item of data) {
const row = document.createElement("tr")
for (let value of Object.values(item)) {
const td = document.createElement("td")
td.textContent = value
row.appendChild(td)
}
table.appendChild(row)
}
return table
}
var table_data = [{
first_name: 'Rose',
last_name: 'Tyler',
home: 'Earth'
},
{
first_name: 'Zoe',
last_name: 'Heriot',
home: 'Space Station W3 '
}, {
first_name: 'Jo',
last_name: 'Grant',
home: 'Earth'
},
{
first_name: 'Leela',
last_name: null,
home: 'Unspecified'
},
{
first_name: 'Romana',
last_name: null,
home: 'Gallifrey'
},
{
first_name: 'Clara',
last_name: 'Oswald',
home: 'Earth'
},
{
first_name: 'Adric',
last_name: null,
home: 'Alzarius'
},
{
first_name: 'Susan',
last_name: 'Foreman',
home: 'Gallifrey'
}
];
document.body.appendChild(dataToTable(table_data))
我如何在Jasmine中测试这段代码
答案 0 :(得分:0)
取决于你是否想要做一些黑客来解决它是一种私人方法的事实,看看Makoto的评论。
但是你可以通过测试使用私有方法的公共方法测试它,它必须在你的类中的某个地方调用。例如
export class Example 1 {
constructor() {}
public foo() {
this.bar()
}
private bar() {
... do awesome stuff ...
}
}
这里你将测试foo()类以获得预期的行为,包括bar()中的行为。
在你的例子中,如果你想验证data.fetDetails是否被调用,那就窥探它并测试你的等于foo。