2017-09-07 7 views
2

Windows에서 조롱을 위해 with-redefs을 사용하여 Clojure에서 간단한 단위 테스트를 만드는 데 어려움을 겪고 있습니다.with-redefs with Windows의 특정 프로젝트에서 작동하지 않습니다.

기능 테스트중인 : 제가 테스트하려고 해요 기능과 기능을 조롱하는 테스트 코드는 모두 다른 네임 스페이스/파일에

(ns com.mynamespace.a 
    (:require [com.mynamespace.b :as b])) 

(defn afunc [param] 
    (b/bfunc param)) 

종속 B 네임 스페이스 조롱하는 아웃 :

(ns com.mynamespace.b) 

    (defn bfunc [param] 
    ; External call 
) 

테스트 코드

(ns com.mynamespace.a-test 
    (:require [com.mynamespace.a :as a] 
      [com.mynamespace.b :as b]) 
    (:use [clojure.test])) 

(deftest a-tests 
     (with-redefs [b/bfunc (constantly "dummy")] 
     (print (a/afunc "test")) 
) 
) 

는 내가 리눅스에 내 단위 테스트 때문에이 실행 잘, 제대로 with-redefs를 사용할 생각 기계 (고정 표시기 컨테이너 또는 가상 우분투),하지만 내 Windows dev에 머신을 개발/실행할 때 그냥 작동하지 않습니다 다음 with-redefs를 바인딩은 이 적용되지 않습니다. 테스트에서 실제를 만들기를 원합니다. http를 호출합니다. 나는 그것을 모의하고 싶습니다. lein test을 실행하거나 Eclipse CCW를 통해 REPL에서 테스트를 실행하는 경우에도 마찬가지입니다.

with-redefs는 이상한 동작을하지만, Linux에서 잘 작동하므로, Windows에서이 프로젝트 테스트를 실행할 때 무언가를 놓친다 고 생각합니다. 내 Windows 컴퓨터에서 테스트를 작성할 때 빠른 피드백 루프를 얻고 싶습니다.

내가 뭘 잘못하고 있는지 아십니까? 감사합니다, 안드라스

+0

Windows 7에서 Clojure 1.8.0으로 재생산 할 수 없습니다. –

답변

5

이 문제 때문에 -Dclojure.compiler.direct-연결 = 진정한 JVM-OPTS 국기, 내가 일하고 있어요 프로젝트에 고유 한 것을 밝혀졌다.

직접 연결을 해제 한 후에 내 테스트는 내 Windows 컴퓨터에서도 가능합니다. 나는 왜 그들이 리눅스에서 성공했는지 궁금하지만 아마도 lein test을 실행할 때 아마도 적용되지 않았을 것이다.