如何在没有Karma的情况下设置单元测试?

时间:2015-02-16 11:59:24

标签: angularjs

我正在关注AngularJS Tutorial。因为我想学习在ASP.NET项目中使用Angular,所以我偏离了教程。我在编写单元测试时遇到问题。根据我的理解,AngularJS使用Jasmine进行单元测试。所以我拿出了用于Jasmine测试的标准HTML页面。

@{
Layout = null;
}

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
 <title>Jasmine Spec Runner v2.1.3</title>
<link rel="stylesheet" type="text/css" href="~/Content/css/jasmine.css" />
<script src="~/Scripts/unittests/jasmine.js"></script>
<script src="~/Scripts/unittests/jasmine-html.js"></script>
<script src="~/Scripts/unittests/boot.js"></script>

<!-- include source files here... -->
@Styles.Render("~/SiteCSS")
@Scripts.Render("~/SiteScripts")

<!-- include spec files here... -->
<script src="~/Scripts/unittests/les1tests.js"></script>


</head>
<body>

</body>
</html>

但是,这在本教程的第2步中没有进行AngularJS测试:

describe('PhoneListCtrl', function () {

    it('should create "phones" model with 3 phones', function () {
        var scope = {},
        ctrl = new PhoneListCtrl(scope);

        expect(scope.phones.length).toBe(3);
    });

});

哪个不行。我通过将angular-mocks.js添加到我的测试页面来修复它:

@Styles.Render("~/SiteCSS")
@Scripts.Render("~/SiteScripts")
<script src="~/Scripts/unittests/angular-mocks.js"></script>

第一次测试通过。然后我遇到了另一个问题。步骤3中的此测试不会运行:

describe('PhoneCat App', function () {

    describe('Phone list view', function () {

        beforeEach(function () {
            browser.get('app/index.html');
        });


        it('should filter the phone list as a user types into the search box', function () {

            var phoneList = element.all(by.repeater('phone in phones'));
            var query = element(by.model('query'));

            expect(phoneList.count()).toBe(3);

            query.sendKeys('nexus');
            expect(phoneList.count()).toBe(1);

            query.clear();
            query.sendKeys('motorola');
            expect(phoneList.count()).toBe(2);
        });

    });

});

我得到一个“ReferenceError:浏览器未定义”错误。我看到的所有答案都涉及Karma testrunner,我没有使用。我究竟做错了什么?如果我不想使用Karma,我该如何使这个测试工作?

1 个答案:

答案 0 :(得分:1)

您会混淆单元测试,通常使用Karma运行,并由Web浏览器执行,使用Protractor API编写端到端测试。

量角器,端到端测试不在浏览器中运行。它们使用Jasmine API但由node.js执行。节点进程启动Web浏览器并使用Selenium与其进行通信,并作为真实用户在您的Web应用程序之前执行。