我有一个控制器,简化为简洁:
.controller('myCtrl', ['$scope', 'data', function ($scope, data) {
$scope.myVar = testFunction(data.name);
function testFunction (name) { ... }; //returns string or null
};
data
是我使用stateProvider中resolve
的{{1}}属性获得的对象。
我希望有两个Jasmine测试验证state
是:
$scope.myVar
有值时,某种字符串(并不重要)。data.name
没有值,则例如:
data.name
我的问题是it('should verify myVar is null when name has no value', function () {
expect(scope.myVar).toBeNull();
});
规范在it('test title', function () {..});
函数中初始化控制器后运行。因此,如果我想设置beforeEach
,我需要在data
部分进行设置。但是,如果我这样做,我会提前确定beforeEach
,而我希望我的两个测试都有所不同 - 一次为空,一次为#34; John"例如。
当想要设置将在控制器初始化中使用的对象并使用不同的值测试它们时,最佳做法是什么?
(注意:由于我不想污染范围,该功能是私有的。)
答案 0 :(得分:0)
作为初步预感,我很可能会在两个不同的describe
部分进行测试:
describe('null title', function () {
beforeEach(function () {
// setup so that resolve returns null
});
it('verify null', function () {
// the test
});
});
describe('not null title', function () {
beforeEach(function () {
// setup so that resolve returns not null
});
it('verify not null', function () {
// the test
});
});
这对你来说是否可行?