2015-01-13 3 views
1

현재 SignalR을 사용하여 데이터를 가져 와서 Knockout을 사용하여 DOM에 바인딩하는 앱이 있습니다. 앱이 커졌고 녹아웃이 점점 복잡 해져서 부풀어 오르게되었으므로 프런트 엔드 바인딩을 위해 AngularJS로 전환하려고합니다.AngularJS에서 SignalR 사용, 단위 테스트 작성 방법

그러나 내가 따르는 각도 튜토리얼은 $ http GET을 사용하여 서버에서 데이터를 가져 오는 것 같습니다. 나는 순수한 객체 나 Lists 나 Dictionaries를 서버 측 코드에서 반환 할 수 있기 때문에 SignalR을 사용하여 데이터를 얻고 싶습니다. 그리고 문자열 화나 역 직렬화를하지 않고도 클라이언트로 가져올 수 있습니다.

SignalR 클라이언트 방법을 구현하는 것은 간단하지만 SignalR 허브 연결을 필요로하는 각도 컨트롤러 메서드를 테스트하기 위해 단위 테스트를 작성하려면 어떻게해야합니까?

+0

당신이 묘사하는 것은 흔한 일이며, 앱이 시작되고 시간이 지남에 따라 커지고 그 안에 내장 된 기술적 부채가 끌리기 시작합니다. 여기서 리팩토링이 이루어지며, 귀하의 경우에는 과격한 전환이 일어납니다. 사람이 충분히 리팩터링 한 후에는 "관심사 분리"를 배우기 시작합니다. 모든 메소드 나 함수가 약 10 줄 이상의 코드를 가지고있을 때마다 너무 많은 작업을 수행하려고 시도하는 것으로 나타났습니다. 각 방법 또는 기능은 한 가지만 수행하면됩니다. 또한 봉쇄가 큰 긴 상속 체인보다 월등하다는 것을 기억하십시오. –

답변

0

응용 프로그램이 복잡하고 부풀어 오르지 않는 결함이 없다면 Angular도 함께 도달 할 수 있습니다. 또한 SignalR과 차이점이 없기 때문에 JSON을 deserialize해야합니다. 나는 외부 전화를 비웃음

그냥 할 동적 languange (의사 코드)

에서 매우 쉽게 WebAPI로 보면, 당신은 서버에서 클라이언트로 상태를 추진하지 않을 경우 이유는 SignalR을 사용하는 표시되지 않습니다
foo.functionname = function(params) { 
    assert(1, params, "It should call server with params = 1"); 
} 
+0

하지만 SignalR을 사용하면 객체를 직렬화 및 비 직렬화 할 필요가 없습니다. 객체를 Hub 클래스로 반환하면 클라이언트 측 메서드로 잘 전달됩니다. 표준 GET 요청에서는 그렇지 않습니다. – RamblerToning

+2

jQuery 또는 다른 라이브러리를 사용하여 동일한 작업을 수행 할 수 있습니다.이 기능을 원한다면 SignalR을 사용할 이유가 없습니다. SignalR은 서버에서 클라이언트로 직접 메시지를 푸시하기위한 pub/sub 프레임 워크입니다. – Anders

관련 문제