2014-12-05 3 views
13

사이트의 모든 페이지에 적용해야하는 어설 션을 작성하는 가장 좋은 방법은 무엇입니까?각도기에서 템플릿을 테스트 하시겠습니까?

요소가 내 사이트의 바닥 글에 있는지 확인하기 위해 모든 페이지에 요소가 있어야합니다.

사이트의 템플릿 요소를 테스트하기 위해 별도의 파일을 작성한 다음 모든 사양에이 파일을 포함시킬 생각입니다. 다른 누군가가 이렇게하고있는 것 같지 않니?

답변

3

먼저 클리너 테스트를 작성하고 대상 사이트로 구성되는 내용을 더 잘 이해하려면 Page Object pattern을 적용하고 웹 페이지의 일부를 다른 페이지 개체로 분할하십시오. 예를 들어, footer, header은 사이트의 다른 웹 페이지에서 다시 사용할 수있는 별도의 페이지 개체 여야합니다.


은 "D 다음과 같이하십시오 주제에

더 RY "원칙을 사용하면 을 한 번 정의하고 여러 테스트 스위트에서 실행할 수있는"공유 된 "재스민 사양을 갖기를 원합니다..

정확하게 이것은 DRYing up Jasmine Specs with Shared Behavior 기사에서 설명하는 내용입니다. 아이디어는 오히려 간단합니다 - 내부에 테스트 스위트가있는 함수를 정의하고 다른 테스트 스위트에서 호출하십시오.예 :

  • 컨텍스트 받아들이는 함수 생성 - 페이지 개체를 - 그리고 바닥 글 특정 재사용 가능한 테스트가 포함되어

    function testFooter(footer) { 
    
        describe("(shared)", function() { 
    
         describe("should show footer with necessary information", function() { 
          it("should show copyright", function() { 
           expect(footer.copyright.getText()).toEqual('Copyright 2014'); 
          }); 
         }); 
    
        }); 
    } 
    
  • 호출 컨텍스트 통과하는 다른 테스트 스위트의 기능 - 바닥 글 페이지 개체를 :

    var FooterPage = require('./footer.po.js'); 
    
    describe('Contacts page', function() { 
        var scope = {}; 
    
        beforeEach(function() { 
         browser.get('/contacts/'); 
         browser.waitForAngular(); 
         scope.page = new ContactsPage(); 
        }); 
    
        // other contacts page specific suites 
        // ... 
    
        testFooter(new FooterPage()); 
    
    }); 
    

당신은 조정을 만들기 위해 코드를 개선해야 할 수도 있습니다 그러나 아이디어는 동일하게 유지됩니다. 한 번 정의하고 다시 사용하십시오. 페이지 객체를 전달하면 훨씬 깨끗하고 투명 해집니다.

항목 :

+1

좋은 솔루션 @alecxe, 나 또한 여기에이 아이디어를 탐구했습니다 http://stackoverflow.com/a/24046016/511069 –

1

사양이 특정 시나리오에 대한 설명이 아닌 특정 페이지에 대한 설명과 같은 방식으로 사양을 사용하므로 "하나의 사양, 한 페이지"가 ​​아닙니다. 스펙의 조건이 엘리먼트의 존재에 영향을 줄 수 없다면 많은 스펙에서 동일한 것을 테스트하는 것이 나쁜 습관이라고 생각합니다.

일반적으로 나는 그런 것들을 테스트 할 필요가 없다고 생각합니다. 나는 엘리먼트가 존재하지 않거나, 영향을 줄 수있는 조건이 있고, 그러한 상황을 테스트 할 수 있다면 가능한지 고려할 것입니다.

테스트를 고집한다면 (예 : 내용을 공유하지 않는 정적 페이지가 있고 손으로 요소가 추가되어 확실해야 함)이 요소의 존재 여부를 테스트하기위한 단일 사양을 만들고 거기에 테스트 할 페이지 목록을 정의하십시오. 따라서이 테스트는 나열된 모든 페이지에서 해당 요소의 존재를 테스트하는 것을 포함합니다.

관련 문제