我正在使用if which vagrant > /dev/null 2>&1; then
echo "This is most likely the host"
fi
在此之后:http://tosbourn.com/using-loops-in-jasmine/我直接在&{39; jasmine 2.3.
'中放置了一个FOR循环。嵌套函数
describe
问题在于' describe('service Profile', function() {
var ProfileService;
beforeEach(function() {
module('app.services.profile');
inject(function(_ProfileService_) {
ProfileService = _ProfileService_;
});
});
describe('method setProfile', function() {
function setProfileTest(key) {
it('should set the object profile', function() {
expect(ProfileService.profile[key]).toBeUndefined();
});
}
for (var key in ProfileService.profile) {
if (ProfileService.profile.hasOwnProperty(key)) {
setProfileTest(key);
}
}
});
});
'功能,it
仍为ProfileService
。
答案 0 :(得分:1)
由于您需要注入ProfileService
,因此循环必须在beforeEach
块之后运行。
我可以看到两种解决方案。要么:
使用硬编码的配置文件列表并迭代它们。例如 - 而不是
for (var key in ProfileService.profile) {
做
for (var key in ['profile1', 'profile2'...) {
或从外部文件加载配置文件。
OR
将for循环放在it
测试中:
it('should set the object profile', function() {
for (var key in ProfileService.profile) {
if (ProfileService.profile.hasOwnProperty(key)) {
expect(ProfileService.profile[key]).toBeUndefined();
}
}
});
答案 1 :(得分:0)
describe
块创建it
块,然后beforeEach
运行,然后阻塞,所以,是的,ProfileService
将不会在描述时定义如果您在it
中定义,则会设置beforeEach
块。但是,beforeEach
并不是唯一可以使用inject
的地方。如果您尝试以下内容会发生什么:
describe('method setProfile', inject( function(ProfileService) { //your code here } ) )