2017-03-31 5 views
2

나는 재스민으로 오늘 테스트를 시작했다. NodeJS로 개발 된 GraphQL 서버로 작업 중이므로 jasmine-node을 사용하고 있습니다.재스민 노드가 실행되지 않을 것으로 예상 됨

다음은 나 자신을 쓰기 첫 사양이며, 나는 그것이 작동하는 줄 알았는데 : 부지에서

.. 

Finished in 0.018 seconds 
2 tests, 4 assertions, 0 failures, 0 skipped 


Error: null 
http://localhost:8000/graphql 
StatusCode: 400 
Body: {"errors":[{"message":"Must provide query string."}]} 

이 내가 기대하는 것을 정확히 경우 :

const request = require('request'); 
const config = require('../sources/config'); 

const base_url = `http://localhost:${config.graphqlPort}/${config.graphqlRoute}`; 

describe("GraphQLServer.",() => { 
it("Should expect something.",() => { 
    expect(1).not.toEqual(2); 
    expect(1).toEqual(1); 
    expect(true).toBe(true); 
    expect(false).not.toBe(true); 
}); 

describe('When request is made.',() => { 
    it('Returns statuscode 200.',() => { 
     request.get(base_url, (error, response, body) => { 
      console.log('Error: ', error); 
      console.log(base_url); 
      console.log('StatusCode: ', response && response.statusCode); 
      console.log('Body:', body); 
      expect(true).toBe(true); 
      expect(true).toBe(false); 
      expect(response.statusCode).toBe(200); 
      expect(response.statusCode).toBe(400); 
      done(); 
      }); 
     }); 
    }); 
}); 

이것은 다음과 같은 결과를 제공 . 나는 쿼리 문자열없이 요청을하므로 본문의 오류가 예상됩니다.

문제는 다음과 같습니다. expectsit("Should expect something") 안에 쓸모없는 4 개의 숫자가 잘 작동하고 있습니다. 결과는 4 assertions입니다. 다른 expect의 내부에있는 it("Returns statuscode 200.")은 결과에 간단하지 않으며 (실패하지 않고 통과하지 못합니다), console.log입니다.

내가 온라인에서 찾은 모든 사례는 내가 여기서 한 일을 정확히 수행 한 것으로 보이지만 아직 제대로 작동하지는 않습니다.

답변

0

나는 재스민에서 수정을 제안하는 정확한 구문을 잊어 버렸지 만 나는 그 대답을 안다고 생각한다. 이것은 약속을 테스트하는 전형적인 경우이다. 테스트가 끝나면 결과가 다시 나오므로 더 이상 테스트에 영향을 줄 수있는 상황에서는 expect 호출이 발생하지 않습니다. 난 당신의 코드와 자스민 노드 문서 사이에 발견

한 가지 차이점은 함수가 매개 변수로 done을해야 it에 전달되는 것입니다,하지만 당신은 () => 대신 (done) => 있습니다. 그것은 당신이보고있는 행동을 유발할 수 있습니다.

+0

감사합니다. Kev! 나는 그 바보 같은 실수를 솔직히 보지 못했습니다. 나는 단지 몇 주 전에 Javascript로 개발을 시작했다는 것을 인정해야한다. 그래서 나는 그러한 버그를 빨리 발견 할 경험이 없다고 생각한다. Javascript가 정확히 도움이되지 않는 것은 오류를주지 않는 습관입니다. 하지만 고마워! – Kenny

+0

안녕하세요. 사실, 많은 JS 컨텍스트가 오류에 대한 최악의 피드백을 산출합니다. 실제로는 때때로 미치게 될 수 있습니다. 기꺼이 도와주세요! – Kev

1

Kev가 맞지만 Jasmine의 구문에는 비동기 실행 완료 후 promise 결과에 expect 문을 넣는 작업이 포함됩니다. 그러면 다음과 같이 보일 것입니다 :

it ("should do a thing with promises", function(done) { 
      myObject.doAThingWithPromises('') 
       .then(function (promiseResult) { 
        expect(promiseResult).toBeDefined(); 
        done(); 
       }) 
     }); 
+0

Elliot에게 고마워요 :) – Kenny

+0

그래서이 경우'request.get (...). then (() => {... done()})' – Kev