【发布时间】:2017-04-03 23:50:43
【问题描述】:
我使用 RSpec、Capybara 和 Poltergeist 驱动程序实现了我的集成测试。这是一个例子:
describe "Answer a question", type: :feature, js: true do
subject(:visit_page) do
login_as create(:user)
exercise = create(:exercise)
question = create_a_question_to_exercise(exercise)
create(:test_case, :hello_world, question: question)
visit new_answer_path(question)
end
it "shows the answer" do
visit_page
content = "puts 'Hello, world!'"
fill_in_editor_field content
expect(page).to have_editor_display text: content
end
end
这是测试中访问的视图中使用的javascript:
<script>
function adjust_screen() {
var new_height = $('.content-wrapper').height()
- $('#test-results').height()
- $('#error_explanation').height();
$('.content-wrapper').height(new_height);
$('#test-results').empty();
$('#error_explanation').remove();
$('#answer-result').remove();
$('.submit').append('<i class="fa fa-refresh fa-spin"></i>');
}
var textarea = $('#editor');
textarea.hide();
var editor = ace.edit("editor_div");
editor.setTheme("ace/theme/twilight");
editor.getSession().setMode("ace/mode/pascal");
// When click put ace editor content in form hidden textarea.
$('input[name="commit"]').on('click', function() {
textarea.val(editor.getSession().getValue());
adjust_screen();
});
</script>
运行测试,我收到以下错误:
Capybara::Poltergeist::JavascriptError: 页面上的 Javascript 代码中出现一个或多个错误。如果您不关心这些错误,可以通过在 Poltergeist 配置中设置 js_errors: false 来忽略它们(详情请参阅文档)。
SyntaxError: 解析错误 SyntaxError:解析错误 ReferenceError:找不到变量:$ ReferenceError:找不到变量:$
(在所有涉及 javascript 的测试中都会发生这种情况)
由于这个实验没有加载javascript库的结论:我在布局的标题中添加了<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>,这个错误就消失了。但是,出现了一个新的错误,指责ace 变量未定义(它来自另一个库,ace-editor)。
最初,我所有的 javascript 库都在 application.js 中引用。所以我不需要在标题中加载它。
我也用capybara-webkit 进行了测试,结果也是如此。
我完全没有想法。有什么建议么?
【问题讨论】:
标签: javascript ruby-on-rails rspec capybara poltergeist