2012-04-04 40 views
6

Tôi đang xây dựng ứng dụng Backbone và tôi cần phải có các thử nghiệm tự động. Tôi không muốn sử dụng selen để thử nghiệm tự động.BDD nào cho các ứng dụng JS xương sống hỗ trợ kiểm tra tự động

Tôi đang tìm kiếm Jasmine và Cucumber.js. Tôi nghĩ Jasmine có thể tốt hơn nhưng trong công ty tôi làm việc họ sử dụng dưa chuột để kiểm tra phía máy chủ và tôi đang nghiên cứu liệu cucumber.js có thể được sử dụng cho sản xuất hay không.

Mọi đề xuất?

+0

bạn ấy có ý gì bằng cách kiểm tra tự động. Tôi hỏi nguyên nhân bạn đề cập đến Selenium, đó là để thử nghiệm tích hợp và Jasmine đó là để thử nghiệm đơn vị. –

+0

Điều tôi muốn nói là tôi muốn thử nghiệm của mình chạy tự động mà không phải kiểm tra từng tính năng trong trình duyệt theo cách thủ công. Tôi nghĩ Jasmine là một công cụ BDD. – chchrist

Trả lời

10

Cucumber.js khá ổn định và sẵn sàng để sử dụng trong sản xuất. Nó thiếu một vài tính năng tiên tiến so với ruby ​​dưa chuột, như phác thảo kịch bản và (hiện có sẵn) biến đổi, mặc dù. Xem README cho bảng trạng thái phát triển.

Nó có thể được sử dụng với Zombie.js, Phantom.js, Selenium và thậm chí trong các trình duyệt. Hầu như, bạn có thể sử dụng bất kỳ thư viện xác nhận/kiểm tra nào trong các định nghĩa bước Cucumber của bạn.

Như Andreas đã chỉ ra, Jasmine nhắm vào các bài kiểm tra/thông số đơn vị trong khi Cucumber là một công cụ kiểm tra chấp nhận (nhấn toàn bộ chồng ứng dụng).

Nếu bạn cần trợ giúp bắt đầu với Cucumber.js, vui lòng ping tôi (@jbpros trên Twitter, jbpros trên Freenode/# dưa chuột).

0

Cả hai, busterjsjstestdriver, có thể bắt đầu có máy chủ riêng lưu trữ trang thử nghiệm. Tất cả những gì bạn phải làm là tự khởi động trình duyệt và mở trang thử nghiệm. Bài kiểm tra sẽ chạy trong trình duyệt và báo cáo kết quả quay lại máy chủ có thể lưu ở định dạng có thể đọc được. Lưu ý rằng cũng có plugin maven cho Jasmine

+1

Cũng đáng nói đến là hoa nhài cũng có thể chạy không đầu với các bóng ma – ggozad

1

Tôi không có đủ điểm để thêm nhận xét vào câu trả lời @jbpros, nhưng cần lưu ý rằng Scenario Outlines hiện đã hoàn tất trong cucumber.js như đã nêu here.

Ví dụ:

thế giới:

// features/support/world.js 

var zombie = require('zombie'); 
var World = function World(callback) { 
    this.browser = new zombie(); // this.browser will be available in step definitions 

    this.visit = function(url, callback) { 
    this.browser.visit(url, callback); 
    }; 

    callback(); // tell Cucumber we're finished and to use 'this' as the world instance 
}; 
exports.World = World; 

Tính năng:

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 
    | 200 | 65 | 135 | 
    | 200 | 5 | 194 | 

bước Definition:

var aTest = function() { 
this.World = require("../support/world.js").World; 

this.start = 0; 
this.eat = 0; 

this.Given(/^there are (\d+) cucumbers$/, function(number, next) { 
    this.start = parseInt(number); 
    callback(); 
}); 

this.When(/^I eat (\d+) cucumbers$/, function (number, next) { 
    this.eat = parseInt(number); 
    callback(); 
}); 

this.Then(/^I should have (\d+) cucumbers$/, function (number, next) { 
    var left = this.start - this.eat; 
    if (left != number) 
     callback.fail(new Error("This test didn't pass, I started with: " + this.start 
      + ", ate: " + this.eat 
      + " and was left with: " + left 
      + ". Expected: " + number)); 
    callback(); 
    }); 
}; 

module.exports = aTest; 
Các vấn đề liên quan