노드에서 RequireJS를 사용하려고하는데 경로 문제로 인해 어려움을 발견했습니다.노드에서 Mocha 및 SquireJS와 함께 RequireJS 사용
여기에 "foo는"여기
$ cat src/foo.js
define([], function() {
var foo = function() {
return "foo";
};
return { foo:foo};
});
foo는 필요로 줄이를 반환하는 간단한 foo는 방법이지만, 상대 경로를 지정하는 경우에만 작동합니다. 그것은 그것이 있어야하는 방법인가?
$ cat src/bar.js
define(['./foo.js'], function(foo) {
var bar = function() {
return foo.foo().replace("foo","bar");
};
return { bar : bar };
});
사항은 모카 테스트에서 훨씬 까다 수 :
- 로드 foo는 바는 __dirname 해결 방법이 필요합니다.
- 막대의 비동기로드가 실패합니다 (테스트 3 및 4 참조). 시종이 설치 NPM 사용하여 설치되어 있기 때문에, 정확한 경로를 필요로하지만, 표준 노드에 맞지 않는 가져 오기
- 구문을 필요로하고 amdefine 해결 방법이 포함되어 있지 않습니다 : 여기
테스트 코드를
$ cat test/footests.js
var requirejs = require('requirejs');
var chai = requirejs("chai");
var should = chai.should();
var Squire = requirejs(__dirname + "/../node_modules/squirejs/src/Squire.js");
describe('when calling foo.foo()', function() {
it('should return "foo"', function() {
var foo = requirejs(__dirname + "/../src/foo.js");
foo.foo().should.equal("foo");
});
});
describe('when calling bar.bar()', function() {
var bar = requirejs(__dirname + "/../src/bar.js");
it('should return "bar"', function() {
bar.bar().should.equal("bar");
});
});
describe('when calling bar.bar() with async requirejs', function() {
it('should return "bar"', function(done) {
requirejs(__dirname + "/../src/bar.js", function(bar) {
bar.bar().should.equal("bar");
done();
})
});
});
describe('when mocking foo.foo() and calling bar.bar()', function() {
it('should return "barbar"', function(done) {
var injector = new Squire();
var fooMock = {
foo : function() {
return "foofoo"; /* instead of just foo */
}
};
injector
.mock('./foo.js', fooMock)
.require(__dirname + "/../src/bar.js", function(bar) {
bar.bar().should.equal("barbar");
done();
});
});
});
내가 설정 GitHub의에 재현했습니다 https://github.com/itaifrenkel/node-requirejs-example
고마워, 그거야. requirejs 헤더가 필요없는 테스트를 보았습니다. requirejs 헤더에서 테스트를 제거하고 define ([ 'chai', 'squirejs'], function (chai, Squire) {...})과 어떤 변경이 필요합니까? "정의가 정의되지 않았습니다"라는 메시지가 나타납니다. – itaifrenkel
"requirejs header"라는 표현으로 무엇을 언급하는지 모르겠습니다. – Louis
다른 일반적인 파일에 "var requirejs; requirejs.config"붙여 넣기를 잘라내어 define ([ 'chai', 'should', 'squire'], function (chai, should, Squire) {}을 사용하여 테스트 파일을 시작한다는 의미입니다.); – itaifrenkel