I want to test my angular app with protractor.
The app has an API Module that talks to the server
During these tests I want to mock this Api Module.
I don't want to do full integration tests, but tests from the user input with expected values from the API.
Not only could this make the client tests faster, it would also allow me to test for edge cases, like connection errors.
How can I do this with protractor?
I just started to setup integration tests.
I used the npm protractor module, installed selenium, adjusted the default config and used the onProtractorRunner.js to verify my setup works.
What is the recommended way of mocking?
I assume that the mocking has to be done within the browser and not directly in the test file.
I assume that the commands in the test file are protractor specific and will be sent to the selenium runners. Therefore I can't share javascript objects during the session and the test.
I somehow expect that I will need a spy library like sinon.js or is this already included in protractor?
Edit: I read about this issue in the protractor issue tracker, which could be a way to do it.
Basically you write a Mock Module in the test, that is sent to be executed in the browser/ the applications scope.
Edit: Here are more promising Issues. The first talks about adding Mocks to the Angular App.
The second talks about mocking the backend.
This looks really nice, in this case the Angular App would stay in it's original form. However this currently only works with the deprecated ng-scenarios.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…