我刚刚开始进行角度单元测试。我很难弄清楚应用程序中的单元测试应涵盖哪些内容。我应该测试以下代码吗?
如果我愿意,我基本上将传递mode
的有效值,并检查defaultProperties
是否发出了this.propertiesSource
各种属性的正确值。难道不像一次又一次地编写相同的代码吗?这只是一个示例,应用程序充满了此类实例。
如果我不测试这些东西,那么我的代码覆盖范围可能会忽略不计。
这是组件代码的示例:
mode: string;
defaultProperties = {
editable: this.editable,
showToolbar: this.showToolbar,
viewMode: this.viewMode,
editMode: this.editMode,
showPopup: this.showPopup,
formSavedClicked: this.formSavedClicked,
cancelClicked: this.cancelClicked,
refresh: this.refresh,
};
private propertiesSource = new BehaviorSubject(this.defaultProperties);
要测试的方法:
setGridMode(mode) {
this.mode = mode;
if (mode === "edit") {
this.propertiesSource.next({
editable: true,
showToolbar: true,
viewMode: false,
editMode: true,
showPopup: false,
formSavedClicked: this.formSavedClicked,
cancelClicked: this.cancelClicked,
refresh: false,
});
} else if (mode == "save") {
this.propertiesSource.next({
editable: false,
showToolbar: false,
viewMode: true,
editMode: false,
showPopup: false,
formSavedClicked: this.formSavedClicked,
cancelClicked: this.cancelClicked,
refresh: true,
})
// more code..multiple if else block like above
}
}
答案 0 :(得分:0)
虽然这看起来有些乏味,但最好对所有可能的单元进行单元测试。
出于某些原因,我将对此单元进行测试:
如果可以测试,就应该测试。
答案 1 :(得分:0)
正如Shashank Vivek所指出的那样,似乎存在很多冗余。也许可以排除一些常用功能。
除此之外,当然应该对代码进行测试,但不一定必须通过单元测试来完成。可能的是,集成测试或UI测试是更合适的方法:通过单元测试,正如您正确观察到的那样,您的测试很可能只是复制代码。但是,从它们无法帮助您发现错误的意义上说,它们可能不是很有价值。
我假设这些设置是为了配置某些小部件库或类似内容的行为。当然,您可以编写一个测试来检查mode
的值,“编辑” refresh
的值是false
。该测试基于您的假设,即该设置将导致相应小部件的某种行为。但是,即使您的假设是错误的,单元测试仍然会通过,因为它只是反映了您自己的错误理解。
要查看这些设置是否正确,因此,您必须在将代码与窗口小部件库集成的地方执行测试,以查看设置是否确实达到了预期的效果-但这不再是单元测试。