현재 사양이 없을 때 'expect'가 사용되었는데, 이는 Jasmine 2.3.1에서 비동기 테스트가 타임아웃되었기 때문일 수 있습니다.
저는 아래와 같이 gulp를 통해 카르마 테스트 케이스를 실행하고 있습니다.
gulp.task('unit-test-karma', function () {
return gulp.src(filePaths.libraryPaths.concat(filePaths.codePathsVerbose.concat(filePaths.testPaths).concat(filePaths.htmlPaths).concat(filePaths.jadePaths)))
//.pipe(plumber({ errorHandler: notify.onError(function(error) { console.log(error.message); return "Karma Error"; }) }))
.pipe(karma({
configFile: './karma.conf.js',
action: 'run', // watch
singleRun: true,
reporters: [ 'dots' ]
}));
});
다음과 같이 작업을 수행할 수 있습니다.run
, IE 11은 아래의 에러를 던집니다.
IE 11.0.0 (Windows 10 0.0.0) ERROR
'expect' was used when there was no current spec, this could be because an asynchronous test timed out
at C:/BbCAT-WebDI/BbCAT-Web/BbCAT-Angular/node_modules/jasmine-core/lib/jasmine-core/jasmine.js:938
하지만 만약 그와 같은 행동으로 실행한다면,watch
크롬, IE 및 파이어폭스에서 모든 테스트 케이스가 성공적으로 실행됩니다.
일부 게시물을 읽어보니 $http 서비스 호출에 문제가 있는 것 같은데 정확히 어디서 문제가 있는지 찾을 수가 없습니다!
이런 오류를 겪었지만, 그것은 제가 실수를 했기 때문입니다.describe
가 없이 기능함it
내부 기능을 합니다.
틀렸습니다
describe('helpDocsDirective', function () {
expect(true).toBe(true);
});
맞아요.
describe('helpDocsDirective', function () {
it("should return true", function () {
expect(true).toBe(true);
});
});
분리해야 하는 두 개의 테스트를 중첩하거나 동일한 테스트 사례에서 여러 비동기 호출을 해결할 수 있습니까?
저도 같은 실수를 저질렀지만, 제가 스스로 한 것입니다.한 개 안에 두 개의 비동기식 테스트가 있었습니다.두 가지 약속 중 하나가 해결되자마자 시험은 끝났습니다.다른 약속 결의는 고아가 되었습니다.
이러한 토막글을 생각해 보십시오.테스트 대상 기능이 호출된 대로 올바르게 반응한다고 가정합니다.
참고: 문제를 보다 명확하게 설명하기 위해 그 때()의 오류 경로를 생략했습니다.
이 공사는 실패합니다.약속이 반환되고 완료()가 실행되면 두 번째 약속이 실패하고 현재 사양이 없을 때 "기대"가 사용되었습니다.." 오류를 범실.
describe( "delay", function(){
var calculator = new Calculator();
it( "delays execution - add and subtract", function(done){
delay( 1000, calculator, 'add', [ 10, 5 ] )
.then(function(result){
expect(result).toEqual( 15 );
done(); // <---- as soon as this runs, test is over
});
delay( 500, calculator, 'subtract', [ 9, 5 ] )
.then(function(result){
expect(result).toEqual( 4 );
done(); // <---- as soon as this runs, test is over
});
});
} );
이것이 바로 시험을 작성하는 올바른 방법입니다.각 약속은 자체 테스트에 포함됩니다.
describe( "delay", function(){
var calculator = new Calculator();
it( "delays execution - add", function(done){
delay( 1000, calculator, 'add', [ 10, 5 ] )
.then(function(result){
expect(result).toEqual( 15 );
done(); // <--- this is now the only resolution for this test
});
});
it( "delays execution - subtract", function(done){
delay( 500, calculator, 'subtract', [ 9, 5 ] )
.then(function(result){
expect(result).toEqual( 4 );
done(); // <--- this is now the only resolution for this test
});
});
} );
제가 아직 댓글을 달기에 부족한 평판이 있어서 여기에 청원을 올립니다. :-)
만약 이것이 당신의 문제라면 이 답변을 정확하다고 표시해 주시겠습니까?
이것은 매우 현실적인 문제입니다, 저도 현재 겪고 있습니다.여기에 핵심 버그가 있는 것 같습니다.저는 캡슐화된 테스트가 아주 잘 되어있습니다.그들은 작습니다(각각 최대 3줄).
저는 2개의 중첩된 설명이 있는 주 설명 부분이 있습니다. 첫 번째 설명은 8개의 i() 함수가 두 번째로 3개의 i() 함수가 있습니다.
예
describe("main", ()=>{
describe("1st", ()=>{
//here are 8 it() definitions
})
describe("2nd", ()=>{
//here are 3 it() definitions
})
})
이제 두 설명 중 하나에서 단일 it() 정의를 제거하면 문제가 사라집니다.또는 세 번째 설명()을 추가하면 문제가 사라집니다.
이것은 재스민에서 발생하는 문제입니다. 그들이 오류를 정확하게 보고하지 않거나 심하게 잘못된 것이 있습니다.또는 여러 테스트를 동시에 실행하여 현명해지려는 업보일 수도 있습니다.어느 쪽이든, 이 문제는 현실적인 것이고 복잡한 코드와는 아무 상관이 없습니다.
아마도 테스트되는 기본 장치와 관련이 있을 것입니다. 제 기능은 재귀적입니다(테스트 케이스가 깊이 들어가지는 않지만).
업보- jasmine@0.3.8
jasmine-core@2.4.1
karma@0.13.22
phantomjs-prebuilt@2.1.7
카르마- phantomjs- launcher@1.0.0
여기서도 같은 문제가 있었는데 알고보니 setTimeout으로 테스트를 했습니다.그것도 다 치웠습니다!
캐치() 안에 완료된 내용을 추가해보거나 예상() 통화 직후에 시도해보시기 바랍니다.
it('should return a Promise that resolves', (done) => {
let promise = promiseFunction();
promise.then(response => {
expect(true).toBe(true);
done();
});
});
또한 재스민 3.5에 이 오류 메시지가 있었습니다. 비동기에 대해 이야기하고 있고 다른 사람의 프로젝트에 대한 jquery가 있기 때문에 예상보다 더 많이 던졌습니다.
테스트 설정에 있어서 구문상의 문제였을 뿐인데...
it("should ...")
expect(thing).toBe(whatever);
})
일하는 것과 비교해서...
it("should ...", function(){
expect(thing).toBe(whatever);
})
언급URL : https://stackoverflow.com/questions/34469116/expect-was-used-when-there-was-no-current-spec-this-could-be-because-an-async
'source' 카테고리의 다른 글
MySQL 저장 프로시저의 변수에 SELECT 문의 값을 저장하려면 어떻게 해야 합니까? (0) | 2023.10.04 |
---|---|
MySQL: ERROR 1227 (42000):액세스 거부 - 사용자를 생성할 수 없습니다. (0) | 2023.09.24 |
Android의 버튼 안에 텍스트 왼쪽 정렬 (0) | 2023.09.24 |
MVC4의 Global.asax.cs 페이지에서 문제 발생 (0) | 2023.09.24 |
jquery-chosen 드롭다운 사용 안 함 (0) | 2023.09.24 |