asp.net-mvc
  • unit-testing
  • knockout.js
  • 2013-02-24 7 views 0 likes 
    0

    접근 :단위 ASP.NET MVC와 마네의 테스트 자바 스크립트가 나는 등 넉 아웃을 사용하여 뷰 모델을 작성한 HTML을 도우미와 모델

    @model Application.Models.PageModel 
    
    <script type="text/javascript"> 
    
        $(function() { 
    
        var publishUrl = '@Html.Raw(Url.Action<Application.Controllers.PageController>(x => ...; 
    
        var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model)); 
    
    .... 
    

    내 질문에 난 그냥 자바 스크립트에 대한 단위 테스트를 할 수있는 방법입니다 로 : 자바 스크립트는 에 따라 달라집니다 - HTML을 도우미 (@ Html.Raw ...)와 - @ Html.Raw (...)와 - 모델

    누군가가 나에게 제발 도와 드릴까요?

    답변

    0

    코드는 단위 테스트가 가능하도록 작성되어야합니다. 새로운 뷰 모델 객체를 생성하는 동안 뷰 모델을 생성하고 뷰 모델에 값을 전달하십시오.

    , 뷰 모델

    function ViewModel(publishUrl, initialData) 
    { 
        this.publishUrl=publishUrl; 
        this.initialData=initialData; 
    } 
    

    는 뷰 모델 객체를 생성하고 외부 종속성의 값을 전달하면 모의 값을 전달하여 뷰 모델을 테스트 할 수 있습니다이 방법을 정의합니다.

    뷰 모델을 생성하고 뷰 모델은 항상 녹아웃 바인딩 될 수 아시는 바와 같이 외부 의존성 값

    var _viewModel = new ViewModel (@Html.Raw(Url.Action<Application.Controllers.PageController>(x => ...), @Html.Raw(new JavaScriptSerializer().Serialize(Model))) 
    

    전달합니다.

    ko.applyBindings(_viewModel) 
    

    모든 시간을 당신이 그 안에 뷰 모델 로직을 테스트되기 때문에 그 loosly 당신은 당신의 ViewModel 내부의 논리를 테스트해야하는 값을 전달 할 수 있어야한다 결합.

    +0

    좋은 답변 주셔서 감사합니다. View Model의 정의가 포함 된 PageVm.cshtml을 갖도록 코드를 재구성했습니다. 어떻게 스크립트 폴더에 있지 않은지 테스트 할 수 있습니다. QUnit의 View 디렉토리에있는 뷰 모델을 포함 할 수 없습니다. – user2103886

    +0

    각 뷰에 대한 viewmodel 파일 (예 : EmployeesViewModel "\ scripts \ viewmodel")을 작성하고 MVC 4를 사용하는 경우 번들링 개념을 통해 포함해야합니다. 뷰 모델은 별도의 파일이므로 Qunit을 사용하여 스크립트 파일을 테스트 할 수 있어야합니다 . –

     관련 문제

    • 관련 문제 없음^_^