У меня есть очень базовое интегрированное рельсовое угловое приложение. Он просто делает ссылку, которая использует данные из запроса GET на рельсах:Может ли rspec использоваться для тестирования встроенного рельсово-углового приложения?
'use strict';
angular.module('angularRspec.controllers')
.controller('FightersController',
function($scope, $http){
console.log("FightersController is loaded...");
$scope.fighters = [];
$http.get('./fighters.json').
success(function(data, status){
$scope.fighters = data;
console.log(status);
console.log(data);
}).
error(function(data, status, headers, config) {
console.log(status);
console.log(headers);
});
});
Когда я бегу спецификации, как это, и использовать совать нос, моя ссылка не появляется:
require 'rails_helper'
feature 'Index of Fighters' do
let!(:fighter) { create(:fighter) }
scenario 'User visits home', js: true do
visit '/'
binding.pry
expect(true).to eq true
end
end
Но, У меня есть подтверждение от консоли, что угловая загрузка в тестовом браузере, а ответ - 200. Проблема не является специфичной для браузера. Я разместил репо здесь: angular_rspec.
Вот мой spec_helper.rb:
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara'
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
Capybara.javascript_driver = :selenium
end
А вот мой rails_helper.rb:
ENV['RAILS_ENV'] ||= 'test'
require 'spec_helper'
require File.expand_path('../../config/environment', __FILE__)
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
ActiveRecord::Migration.check_pending!
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_spec_type_from_file_location!
end
Вот мой макет:
<!DOCTYPE html>
<html lang="en" ng-app="angularRspec">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><%= content_for?(:title) ? yield(:title) : "angular rspec" %></title>
<%= csrf_meta_tags %>
<%= stylesheet_link_tag "application", :media => "all" %>
</head>
<body>
<div class="container">
<h1>Angular Rspec</h1>
<div ng-view></div>
<div ng-controller="FightersController" id="primary"></div>
</div>
<%= javascript_include_tag "application" %>
</body>
</html>
Вот и все! Спасибо! –