好了,所以我很久以来一直在某个问题上绊脚石,我想听听社区其他成员的意见。
首先,让我们看一些抽象控制器。
function Ctrl($scope, anyService) {
$scope.field = "field";
$scope.whenClicked = function() {
util();
};
function util() {
anyService.doSmth();
}
}
显然,我们在这里:
$scope
并已注入一些服务util()
现在,我想在单元测试(Jasmine)中介绍此类。但是,问题是我想验证单击(调用whenClicked()
)某项时该util()
方法将被调用。我不知道该怎么做,因为在Jasmine测试中,我总是会收到错误,指出util()
尚未定义模拟或未调用模拟。
注意:我不是要修复这个特定的示例,而是询问有关一般测试这种html" target="_blank">代码模式的问题。
因此,请不要告诉我“什么是确切的错误”。我在问如何做到这一点,而不是如何解决这个问题。
我一直在尝试多种解决方法:
$scope
在单元测试中使用,因为我没有将此功能附加到该对象上(它通常以消息Expected spy but got undefined
或类似内容结尾)Ctrl.util = util;
,然后验证类似的模拟,Ctrl.util = jasmine.createSpy()
但是在这种情况下Ctrl.util
没有被调用,因此测试失败util()
为附加到this
对象并Ctrl.util
再次嘲笑,但没有运气好吧,我无法找到解决方法,我希望JS忍者会提供一些帮助,一个有用的小提琴将是完美的。
在范围上命名是污染。您要做的是将该逻辑提取到一个单独的函数中,然后将其注入您的Controller中。即
function Ctrl($scope, util) {
$scope.field = "field";
$scope.whenClicked = function() {
util();
};
}
angular.module("foo", [])
.service("anyService", function(...){...})
.factory("util", function(anyService) {
return function() {
anyService.doSmth();
};
});
现在,您可以使用Ctrl 以及 “ util” 模拟单元测试。
有没有任何变通办法来直接测试那些方法而不公开它们?
我有一个Angular 11项目,我不知道如何测试私有方法。 下面是一个代码示例: 有什么想法吗?
问题内容: 我正在使用spring 3.2.0和junit 4 这是我需要测试的控制器方法 spring-servlet config is: This is my test class : 如何使用MockMvc测试此方法? 问题答案: 你可以使用以下注释来使用应用程序调度程序servlet xml。以下示例使用路径/ mysessiontest设置了一些会话属性并期望返回某个视图来命中控制器:
我的任务是为其他人实现的一些组件实现测试。我尽量不修改他们的代码,但我发现这很难,因为他们把所有的方法都私有化了,而且他们在方法中发出HTTP请求并订阅它,这让我很难弄清楚最好的测试场景是什么。下面是一个例子: 总而言之: > 这种情况最好的测试场景是什么?
我有以下代码 我对嘲笑不熟悉。我有以下疑问。我正在尝试测试公共方法。 我是否可以断言私有变量workDone的值? 是否可以验证超类中的方法调用? 如何在方法中模拟私有方法调用?
公共方法getA()的测试按预期工作,但私有方法getB()的测试不返回模拟值“b”,而是返回与方法getB()的实际返回值相对应的“b”。必须如何调整对getB()的测试,以便返回模拟值“b”?