2017-04-26 5 views
0

메신저가 Javascript 측에서 단위 테스트를 실행하는 레일 앱을 실행 중입니다 (Tephone/Jasmine 사용).단위 테스트에서 "ReferenceError : 변수를 찾을 수 없습니다 : 콧수염"?

재미있는 점은 기능이 작동하고 있다는 것입니다. (console.log에 반환 할 수있는 값은 무엇입니까 (Mustache.render 기능)입니다.하지만 그 함수를 호출하면 내 단위 테스트에서 점점 메신저 :

Failure/Error: ReferenceError: Can't find variable: Mustache

을 참고로 나는 실제로 콧수염이 단순히 그것을 사용하는 함수를 호출하고 다시 확인하는 반환 값입니다 잡아 직접 메신저 기능을 렌더링 호출하지 않습니다

..

나는 성공적으로 그릴 수 있었다. AB와 다양한 다른 기능을 사용하고 잘 사용, 이건 그냥 내게 문제가되고있다. Mustache.render 개체가 자신의 파일이나 범위 또는 그 밖에 존재하지 않을 수 있습니까?

편집 : 예제 코드 :

_makeSomething: function viewMakeSomething(data) { 
     const template = templates.something; 

     return Mustache.render(document.querySelector(template).innerHTML, data); 
    } 

내 테스트 코드는 간단하다 : 나는 무엇을 주장하거나 기타 /를 분할하기 전에

it('_makeSomething object', function() { 

    let obj = {id: 1234, content: "_makeSomething Assertion", author: "Test User"} 
    let $something = _makeSomething(obj); 
    }); 

(지금은 그냥 캡처 메신저 ... .,하지만 그냥 부르기 만하면됩니다.)

+0

당신은 코드를 바랍니다 보여줄 수 있습니까? – Torben

+0

물론 편집을 추가하겠습니다. – msmith1114

답변

1

문제는 당신의 티스푼이 당신의 dev/production assets pipelene에 접근 할 수 없다는 것입니다. 테스트를 위해로드 할 JS를 지정해야합니다. 이는 매니페스트의 모든 파일을로드하여 일부 기능을 테스트하지 못하게하는 데 필요합니다. 이것은 단위 테스트이기 때문입니다. example에서

:

//= require mustache 
describe("My great feature", function() { 

    it("will change the world", function() { 
    expect(true).toBe(true); 
    expect(Mustache).toBeDefined(); 
    }); 

}); 
+0

필자는 파일 자체 (Mustache는 그것을 필요로하지 않으며 그것의 어떤 것도'import files'을 필요로하지 않는다)을 알아 차렸다. 나는 그것이 npm 패키지로 설치되었다는 것을 안다. 그러나 나는 그것이 어디에서든지 포함되는 것을 보지 못한다. – msmith1114

+0

내 spec_helpers 파일에'/ = require Mustache'를 추가하려고했는데 (불행히도 제발 찻 숟가락이 무엇인지 제안 함) 불행히도 제로 행운이 있습니다 – msmith1114

+0

[docs] (https://github.com/mustache/mustache)에 따르면'Mustache'는 루비 클래스이고 js 파일 에서처럼 호출 할 수 없습니다. 이 작업을 수행하려면 적절한 어댑터가 필요합니다. – nautgrad