다소 큰 아키텍처 변경으로 인해 실패한 사양이 많이 있습니다. 각 항목에 ‘초점’으로 태그를 지정하여 하나씩 수정하려고합니다.
jasmine.js에는 이와 같은 기능이 있습니까? 나는 그것이 한 지점에서 읽었다 고 맹세했지만 문서에서는 그것을 보지 못했다.
답변
스펙의 URL을 사용하여 단일 스펙을 실행할 수 있습니다.
describe("MySpec", function() {
it('function 1', function() {
//...
})
it('function 2', function() {
//...
}
})
지금 당신은이 URL로 단지 전체 사양을 실행 http://localhost:8888?spec=MySpec
하고 첫 번째 테스트와http://localhost:8888?spec=MySpec+function+1
답변
Karma를 사용하는 경우 fit
or fdescribe
( iit
및 ddescribe
2.1 이전 Jasmine)로 하나의 테스트 만 활성화 할 수 있습니다 .
이것은 단지 다음을 실행합니다 Spec1
:
// or "ddescribe" in Jasmine prior 2.1
fdescribe('Spec1', function () {
it('should do something', function () {
// ...
});
});
describe('Spec2', function () {
it('should do something', function () {
// ...
});
});
이것은 단지 다음을 실행합니다 testA
:
describe('Spec1', function () {
// or "iit" in Jasmine prior 2.1
fit('testA', function () {
// ...
});
it('testB', function () {
// ...
});
});
답변
핵심에서 2.1 이후 fit
와 fdescribe
.
답변
이 문제를 해결하려는 사람은 코드 자체에서 설정할 수있는 더 나은 방법은이 플러그인을 사용하는 것입니다. https://github.com/davemo/jasmine-only
다음과 같이 코드에서 스펙 독점 성을 설정할 수 있습니다.
describe.only("MySpec", function() {
it('function 1', function() {
//...
})
it.only('function 2', function() {
//...
}
})
// This won't be run if there are specs using describe.only/ddescribe or it.only/iit
describe("Spec 2", function(){})
이것을 Jasmine 코어에 추가하는 것에 대한 긴 토론이있었습니다 : https://github.com/pivotal/jasmine/pull/309
Karma / Testacular를 통해 Jasmine을 사용하는 경우 이미 ddescribe()
및iit()
답변
당신이 그것을 할 수있는 몇 가지 방법이 있습니다.
Jasmine의 기능 Focused Specs (2.2) : http://jasmine.github.io/2.2/focused_specs.html
초점 사양은 그것이 실행되는 유일한 사양이되도록 만듭니다. 적합하게 선언 된 모든 사양에 중점을 둡니다.
describe("Focused specs", function() {
fit("is focused and will run", function() {
expect(true).toBeTruthy();
});
it('is not focused and will not run', function(){
expect(true).toBeFalsy();
});
});
그러나 테스트를 선택적으로 실행하기 위해 테스트 (적합하고 fdescribe)를 편집하는 아이디어가 마음에 들지 않습니다. 나는 정규 표현식을 사용하여 테스트를 필터링 할 수있는 카르마 와 같은 테스트 러너를 사용하는 것을 선호합니다 .
다음은 grunt 를 사용하는 예 입니다.
$ grunt karma:dev watch --grep=mypattern
당신이 사용하는 경우 꿀꺽을 (내가 좋아하는 작업 주자 인), 당신은에 인수 전달할 수 있습니다 꿀꺽 – 카르마 카르마의 설정을 설정하여 yargs와 일치하는 패턴을.
이런 식으로 :
var Args = function(yargs) {
var _match = yargs.m || yargs.match;
var _file = yargs.f || yargs.file;
return {
match: function() { if (_match) { return {args: ['--grep', _match]} } }
};
}(args.argv);
var Tasks = function() {
var test = function() {
return gulp.src(Files.testFiles)
.pipe(karma({ configFile: 'karma.conf.js', client: Args.match()}))
.on('error', function(err) { throw err; });
};
return {
test: function() { return test() }
}
}(Args);
gulp.task('default', ['build'], Tasks.test);
내 요지를 참조하십시오 : https://gist.github.com/rimian/0f9b88266a0f63696f21
이제 설명을 사용하여 단일 사양을 실행할 수 있습니다.
내 로컬 테스트 실행 : (14 of 1 (스킵 13))
gulp -m 'triggers the event when the API returns success'
[20:59:14] Using gulpfile ~/gulpfile.js
[20:59:14] Starting 'clean'...
[20:59:14] Finished 'clean' after 2.25 ms
[20:59:14] Starting 'build'...
[20:59:14] Finished 'build' after 17 ms
[20:59:14] Starting 'default'...
[20:59:14] Starting Karma server...
INFO [karma]: Karma v0.12.31 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
WARN [watcher]: All files matched by "/spec/karma.conf.js" were excluded.
INFO [Chrome 42.0.2311 (Mac OS X 10.10.3)]: Connected on socket hivjQFvQbPdNT5Hje2x2 with id 44705181
Chrome 42.0.2311 (Mac OS X 10.10.3): Executed 1 of 14 (skipped 13) SUCCESS (0.012 secs / 0.009 secs)
[20:59:16] Finished 'default' after 2.08 s
답변
당신은 앞까지 당신의 모든 사양을 만들 수 있지만, 그들을 해제 할 수 있습니다 xdescribe
와 xit
이를 테스트 할 수있는 거 준비가 될 때까지.
describe('BuckRogers', function () {
it('shoots aliens', function () {
// this will be tested
});
xit('rescues women', function () {
// this won't
});
});
// this whole function will be ignored
xdescribe('Alien', function () {
it('dies when shot', function () {
});
});
답변
spec_runner.htlm에서 독립형 Jasmine (2.0.0)을 사용하면 특정 사양을 클릭하고 해당 사양에 집중할 수 있습니다. 나는이 기능을 일찍 알아 차렸어야했다.