我试图在一个模块中对控制器代码进行单元测试,该模块将其他模块作为依赖项,但是无法弄清楚如何正确地模拟它们.
我正在使用Jasmine Framework并使用Karma(Testacular)运行我的测试.
模块代码
var app = angular.module('events', ['af.widgets', 'angular-table']);
app.controller('eventsCtrl', function([dependencies]){
$scope.events = [];
...
});
Run Code Online (Sandbox Code Playgroud)
规格代码
describe('events module', function(){
var $scope,
ctrl;
beforeEach(function(){
angular.mock.module('af.widgets', []);
angular.mock.module('angular-table', []);
module('events', ['af.widgets', 'angular-table']);
});
beforeEach(inject(function($rootScope, $controller){
$scope = $rootScope.new();
ctrl = $controller('NameCtrl', {
$scope: $scope,
});
}));
it('should have an empty events array', function(){
expect($scope.events).toBe([]);
})
});
Run Code Online (Sandbox Code Playgroud)
我得到的错误是Karma是"没有模块af.widgets",所以显然我并没有正确地模仿模块依赖.任何提示?
我一整天都搞乱这个,似乎无法找到解决办法.
我有一个简单的ul作为固定标头与以下css:
body {
width: 100%;
height: 100%;
min-height: 100%;
}
.stream .header {
position: fixed;
width: 100%;
height: 41px;
top: 0;
right: 0;
left: 0;
z-index: 10;
margin-bottom: 10px;
list-style: none;
}
Run Code Online (Sandbox Code Playgroud)
标题下方的内容具有以下css:
.stream .stream-content {
position: relative;
padding-top: 41px;
-webkit-transform: translate3d(0, 0, 0);
}
Run Code Online (Sandbox Code Playgroud)
在ios7移动safari中滚动页面时,会发生以下情况:
首先向下滚动 - 标题随页面移动一直移动,直到滚动完成.
第二次向下滚动 - 标题完全消失,滚动完成后不会重新出现.
向上滚动(标题仍然可见) - 标题完全消失,并且在到达页面顶部时不会再出现.
向上滚动(标题隐藏) - 标题保持隐藏状态,并在到达页面顶部时不再出现.
向上滚动(已在页面顶部隐藏标题) - 标题重新出现并正常运行,直到页面向下滚动两次.
我在iOS6移动游戏中没遇到这个问题,所以这个问题似乎与滚动时调整大小的新网址有关.
其他人有类似问题吗?建议欢迎.
更新:
因此,在标头的父(.stream)上删除-webkit-transform3d()似乎会消除问题,因此必须存在与父div呈现方式和内部标头的冲突.
仍在寻找工作.
angularjs ×1
css ×1
css-position ×1
ios7 ×1
jasmine ×1
karma-runner ×1
scroll ×1
unit-testing ×1