2014-02-10 5 views
18

저는 각도기가있는 저속한 각도 어플리케이션에 대해 현재 일부 e2e 테스트를 작성하고 있습니다.각도기를 사용하여 e2e 테스트에서 요소의 동적 개수를 계산하는 방법

내 응용 프로그램이 잘 작동

, 단위 테스트를 모두 통과 는, E2E도 사용 ...이 일 때까지

appE2ESpec.js

describe('adding an item', function() { 
    var items, 
     addItemButton, 
     startCount; 

    beforeEach(function() { 
    items = element.all(by.css('li.item')); 
    addItemButton = element(by.id('addItemButton')); 
    startCount = items.count(); 
    }); 

    it('should display a new item in list', function() { 
    addItemButton.click(); 

    expect(items.count()).toEqual(startCount+1); 
    }); 
}); 

이것은 내가 내 테스트를 작성했습니다 얼마나하지만, ,

문제는 : items.count()가 약속을 반환, 내가가,하지만 난에 각도기를 강제로 관리 할 수 ​​있다는 것을 알고 그것을 해결하십시오. 나는 무엇을 시도했다

Failures: 

1) myApp adding an item should display a new item in list 
    Message: 
    Expected 6 to equal '[object Object]1'. 

을 : 그래서 난이 얻을

items.count().then(function(count) { 
    startCount = count; 
    //console.log(startCount) --> "6" Perfect! 
}); 

을하지만 결국에 같은 결과를 얻었다 ... 나는 나는 thenexpect를 넣을 수 없습니다 그것도 생각했습니다.

  • 저는 각도기 GitHub 저장소 문제, StackOverflow 및 Google AngularJs 그룹을 검색했습니다.

부록 :

console.log(startCount) 출력이 :

{ then: [Function: then], 
    cancel: [Function: cancel], 
    isPending: [Function: isPending] } 

내가 .toEqual(6)를 작성한 수도 있지만 나는 내 테스트 내 응용 프로그램 시작 상태를 변경해야 할 때마다 다시하고 싶지 않아 .

아이디어가 있으십니까? 미리 감사드립니다 !!

답변

24

약속을 해결 한 다음 주장을해야합니다.

각도기는 expect()에 전달한 약속을 해결하지만 약속에 번호를 추가 할 수 없습니다. 먼저 약속의 값을 해결해야합니다 : 더 읽기 쉬운 방법으로 약속을 극복 할 수 있습니다 chai-as-promised이 주장에 대한 chai을 사용

beforeEach(function() { 
    ... 
    items.count().then(function(originalCount) { 
    startCount = originalCount; 
    }); 
}); 

it('should display a new item in list', function() { 
    ... 
    expect(items.count()).toEqual(startCount+1); 
}); 
+0

을 당신은 나의 영웅입니다! 고마워요;) 다른 사람들이 각도기로 시작하는 데 도움이되기를 바랍니다. – glepretre

+2

같은 문제가 발생합니다. 그들은이 약속을 해결하기 위해 각도기에 방법을 만들어야합니다. 프로그래머가 약속을 해결하기 위해 expect()를 사용해서는 안됩니다. expect()를 사용하지 않고도 값을 필요로하는 경우가 항상있을 것입니다. – supertonsky

+1

@glepretre 동일한 문제가 있지만 .. 위에 제시된 해결책이 작동하지 않습니다. 나는 "기대되는 3이 정의되지 않은 동등한 것"을 얻고있다. 오류. –

2

동안. 그것은 당신이 선언 먼저해야 할 일이하려면 코드에서

var chai = require('chai'); 
var chaiAsPromised = require('chai-as-promised'); 
chai.use(chaiAsPromised); 

다음을 :

// here is modified remaind of the code from the original question: 
it('should display a new item in list', function() { 
    addItemButton.click(); 

    expect(items.count()).should.eventually.equal(startCount+1); 
}); 
관련 문제