Javascript 如何使用jasmine对局部变量进行单元测试?
我试图在下面的代码中测试两个局部变量,Javascript 如何使用jasmine对局部变量进行单元测试?,javascript,unit-testing,jasmine,Javascript,Unit Testing,Jasmine,我试图在下面的代码中测试两个局部变量,language和translationbj: public loadDictionary () { this.source$ = this.httpService .get(...) .map((response) => { const language = this.lang // this.lang contains a value like 'en_GB
language
和translationbj
:
public loadDictionary () {
this.source$ = this.httpService
.get(...)
.map((response) => {
const language = this.lang // this.lang contains a value like 'en_GB';
const translationObj = this.convertStringsToArrays(response.data.translations) // contains an object like {'name' : 'Donald', 'age': '16'};
// other stuff going on here
});
return this.source$;
}
}
language
返回一个类似“en_GB”的字符串,translationbj
返回一个键/值对象,如{'name':'Donald','age':'16'}
我有两个问题
language
)还是分配给它的值(this.lang
)您无法访问它们,因为它们位于闭合内部。您需要公开它们来监视它们。像这样的私有内容不是您正在测试的单元的公共API的一部分。您的单元测试不应该关心内部发生了什么,而应该关心单元作为一个整体的行为。假设它以某种方式使用这些变量并返回其他可见的结果——这就是您应该在单元测试中检查的内容。谢谢你们@詹姆斯-是的,没错,这些变量还有其他作用。我为loadDictionary()编写的测试确实通过了,但是一个代码覆盖率工具告诉我this.lang和this.convertstringstoarray在测试中没有涉及到的地方。所以我猜这些函数需要自己的测试,因为它们在闭包中,所以您无法访问它们。您需要公开它们来监视它们。像这样的私有内容不是您正在测试的单元的公共API的一部分。您的单元测试不应该关心内部发生了什么,而应该关心单元作为一个整体的行为。假设它以某种方式使用这些变量并返回其他可见的结果——这就是您应该在单元测试中检查的内容。谢谢你们@詹姆斯-是的,没错,这些变量还有其他作用。我为loadDictionary()编写的测试确实通过了,但是一个代码覆盖率工具告诉我this.lang和this.convertstringstoarray在测试中没有涉及到的地方。所以我想这些函数需要自己的测试