2016-11-30 4 views
1

내가 사용하는 앱에서 사용자의 이메일 주소를 확인하는 GET 경로가 있습니다. 이메일이 유효하지 않은 경우, 서버가 응답 :ember-cli-mirage 오류 : 핸들러에서 아무 것도 반환하지 않지만 핸들러가 존재합니다.

Content-Type:application/json; charset=utf-8
    • 200 상태 코드
    • 응답 헤더와 응답 데이터 자체 것은 단지 문자열입니다
    "이 이메일 잘못되었습니다"

    나는 수행하여 ember-cli-mirage이 시뮬레이션하기 위해 노력하고있어 :

    this.get('/ember_api/v1/validations/validate_email', function() { 
        return [200, { 'Content-Type': 'application/json' }, "This email is invalid"]; 
    
        // also tried this: 
        // return new Mirage.Response(200, { 'Content-Type': 'application/json' }, JSON.stringify({"message":"This email is invalid"})); 
    
        // and tried this: 
        // return "This email is invalid"; 
    }); 
    

    테스트 자체는이 요청 떨어져 발사 버튼 클릭입니다 :

    GET "/ember_api/v1/validations/validate_email?email=fakey%40fakefakefake.com&skip_uniq=true" 
    

    을 ... 내가지고있어 오류가 있습니다 : 그것은 return [status, headers, body]에 저를 묻는 데요,하지만 난 '

    Pretender intercepted GET /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true but encountered an error: Nothing returned by handler for /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true. Remember to return [status, headers, body]; in your route handler.`

    내 처리기에서이 일을 m, 그리고 여전히 오류가 throw됩니다.

    실제로 응답에 문제가 있습니까? JSON API 형식의 객체를 실제로 반환하기 위해 API를 편집해야합니까? 그렇게 테스트를 작성할 수 있습니까?

    나는 앱이하는 일이기 때문에 내 테스트에서 문자열을 반환 할 수 있어야한다고 생각합니다. 어떤 도움을 주셔서 감사합니다.

  • 답변

    0

    사용중인 this.get은 미라지 버전입니다. this.pretender.get을 사용하면 현재 코드 샘플과 함께 사용할 수 있습니다 ...

    +0

    그게 이상한 일입니다. 'ember-cli-mirage'를 설치했다면 "미라지 버전"이 작동하지 않아야합니까? 왜'this.pretender.get'을 할 필요가 있습니까? 신기루 문서에서이 방법을 참조하는 것이 아무것도 없습니다. [doc here]의 마지막 예제 (http://www.ember-cli-mirage.com/docs/v0.1.x/acceptance-testing/)는'server.put' 대신' server.pretender.put' –

    +0

    @TomNetzband 미라지는 자신의 추가 단순화 된 레이어로 프리텐더를 감 쌉니다. 그래서 "신기루"대신 "Pretender"라고 말했듯이 초기 접근 방식이 작동하지 않는 이유가 있습니다. 원하는 경우 레이어와 프리텐더 사용 (http://www.ember-cli-mirage.com/docs/v0.2.x/configuration/#pretender) – acorncom