【发布时间】:2017-01-02 15:01:49
【问题描述】:
我正在尝试使用 karma-jasmine,并且我正在研究一些基本示例。
I have created one small plnkr 只做两件事:
- 添加数字
- 在单击按钮时显示一些硬编码值
这是我的MainController.spec.js:
describe('Main Controller', function () {
var $controller, MainController, UserFactory;
var data = {
"name": "Shashank",
"rank": "1"
}
beforeEach(angular.mock.module('app'));
beforeEach(inject(function (_$controller_, _UserFactory_) {
$controller = _$controller_;
UserFactory = _UserFactory_;
MainController = $controller('MainController', {UserFactory: UserFactory});
spyOn(MainController, 'add').and.callThrough();
spyOn(MainController, 'getHardData').and.callThrough();
}))
it('should be defined', function () {
expect(MainController).toBeDefined();
})
it('should have number = 3', function () {
expect(MainController.number).toEqual(5)
})
it('add() should assign value properly', function () {
// expect(MainController.add).toHaveBeenCalled();
})
it('getHardData should assign the exact data', function () {
// expect(MainController.getHardData).toHaveBeenCalled();
// expect(MainController.data).toEqual(data);
})
})
对于附件 plnkr 中提到的控制器,我认为我应该只测试 2 件事:
- 测试添加是否正常工作。
- 测试按钮后面的数据是否正确
问题:
- 取消注释上述任何行会导致错误:
Chrome 55.0.2883 (Windows 7 0.0.0) 主控制器 add() 应该正确分配值失败
预期的间谍添加已被调用。 在对象。 (控制器/MainController.spec.js:28:36) Chrome 55.0.2883(Windows 7 0.0.0):执行 4 次,共 4 次(1 次失败)(0.016 秒 / 0.012 秒)
- 另外,在
$controller('MainController', {UserFactory: UserFactory});中,我知道我们正在分配 factory 的值,但将其更改为$controller('MainController', {});不会引发任何错误。 为什么?
请帮助我理解我的愚蠢错误。
任何了解业力和茉莉花的最佳实践/示例的好链接都会有很大帮助
【问题讨论】:
标签: angularjs jasmine karma-jasmine