1

私は最終的に非常に単純なエンドツーエンドのテストを完了することができました。

scenario.jsでは:

describe('My app', function () {
    beforeEach(function () {
        browser().navigateTo('/');
    });

    describe('On Load', function () {
        it('Textbox should be blank', function () {
            expect(input('textbox').val()).toBe('');
        });
    });
});

私のrunner.htmlは次のようになります。

<head>
    <title>End2end Test Runner</title>
    <script src="/js/libs/angular-scenario.js" ng-autotest></script>
    <script src="/js/libs/angular-mocks.js"></script>
    <script src="/js/test/e2e/scenarios.js"></script>
</head>

これにより、サイトが起動し、ナビゲートされ、入力が空白であることを確認します。エース。

ただし、これまでの内容を拡張するこのテストを追加したいと思います。

describe('Click on Add', function () {
    it('will add new item if valid', function () {
        input('newItemName').enter('Test Item');
        element('#add').click();
        expect(input('newItemName').val()).toBe('');
        expect(repeater('#items li').count()).toEqual(1);
    });
});

しかし、このテストを実行する前に、アプリが依存しているストレージ サービスをモックしたいと思います。

これが私のコントローラー定義です:

myapp.controller('MyController', ['$scope', '$routeParams', '$filter', 'storage',
    function ($scope, $routeParams, $filter, storage) { 
        . . . . 
    }
]);

私はこのようなことをしたいので、これは私に問題を引き起こしています(私は思う):

describe('Controller Unit Tests', function(){
    var ctrl;

    beforeEach(function(){
        ctrl = new MyController();
    });

    it('should ....', function() {
        expect(true).toBe(true);
    });
});

しかし、コントローラーを宣言する方法が原因でできません。そして、私がコントローラーをそのように宣言している理由は、縮小目的のためです...

この問題を解決する方法について誰かアドバイスがありますか?!

4

1 に答える 1

3

試す

function MyController($scope, $routeParams, $filter, storage) {}
MyCtrl1.$inject = ['$scope', '$routeParams', '$filter', 'storage'];
于 2012-09-20T15:45:55.887 に答える