Dojo Toolkit 1.9 맨 위에 개발 된 내 코드 (서버 및 클라이언트)에 대해 Intern 1.4으로 코딩 된 일련의 기본 테스트를 수행했습니다.intern.js를 사용하여 Dojo 클래스에 모의 주입 방법
이제 AMD 로더가 자동으로 해결 한 종속성 대신 mock 객체를 사용하여 클래스를 개별적으로 테스트하고 싶습니다.
여기 'aa'에 따라 'bb'가있는 클래스 세트와 'aa'클래스의 모의목 및 확인하려는 테스트 사례가 있습니다.
/* file in <root>/tests/aaMock.js */
define([], function() {
return {
get: function() { return 'aaMock' }
};
});
- -
/* file <root>/aa.js */
define([], function() {
return {
get: function() { return 'aa' }
};
});
-
/* file <root>/bb.js */
define([ './aa' ], function(aa) {
return {
get: function() { return aa.get() + '-bb' }
};
});
위의 테스트 파일에서
/* file in <root>/tests/aaTest.js */
define([ 'intern!object', 'intern/chai!assert', '../bb', ], function (registerSuite, assert, bb) {
registerSuite({
name: 'testbed',
'bb untouched': function() {
assert.strictEqual('aa-bb', bb.get());
},
'bb with mocked aa': function() {
require(
{ map: { '*': { 'aa': '<pkg>/tests/aaMock' } } },
[ '<pkg>/bb' ],
function(bb) {
assert.strictEqual('aaMock-bb', bb.get());
}
);
}
});
});
는, 인턴은 하나 개의 성공적인 테스트와 하나 개의 실패를보고합니다. Dojo 로더 (Dojo 2는 인턴으로 패키징 됨)를 추적 할 수있는 한 'bb'모듈의 두 번째 참조는 로더 캐시에서 가져옵니다.
질문 :
- 은 올바른 접근 방식인가? 또는 주어진 'aaMock'참조를 사용하여 'aa'클래스의 로컬 참조를 재정의하는
injectMock()
메소드를 사용하여 'bb'클래스를 계측해야합니까? - 나는 RequireJS 캐시가 invalidated with
context
andurlArgs
flags 일 수 있음을 읽었습니다. Dojo loader와 비슷한 것을 할 수 있습니까?
context-sensitive require은 새 구성을 허용하지 않으므로 여기서는 사용하지 않았습니다. 인턴 1.5과 require.undef
기능을 기다리는 동안
감사합니다, 돔
가능한 중복 (http://stackoverflow.com/questions/16324900/how-to-mock- [인턴 시험에서 의존성을 조롱하는 방법] dependencies-in-intern-tests) –
예, 그게 중복입니다 (어떻게 놓쳤는 지 모르겠습니다!). 인턴 1.5와 함께 배송되는'require.undef'에 대한 귀하의 언급은 제가 찾고있는 것입니다! 이 업데이트에 대한 ETA가 있습니까? –