小编Nic*_*ick的帖子

capybara - 使用xPath查找离开范围内

我正在尝试使用默认的Rails日期,时间和日期时间字段与Capybara构建日期选择器.我正在使用该within方法来查找字段的选择框,但是当我使用xPath查找正确的框时,它会离开within范围并在元素的页面上找到第一个匹配项.

这是我正在使用的代码.我正在测试的页面有2个日期时间字段,但由于此错误,我只能让它更改第一个.目前我有一个带有id的div容器,它包含了datetime字段,但我确实打算通过标签切换代码来查找.

module  Marketron
  module DateTime

    def select_date(field, options = {})
      date_parse = Date.parse(options[:with])

      year = date_parse.year.to_s
      month = date_parse.strftime('%B')
      day = date_parse.day.to_s

      within("div##{field}") do
        find(:xpath, "//select[contains(@id, \"_#{FIELDS[:year]}\")]").select(year)
        find(:xpath, "//select[contains(@id, \"_#{FIELDS[:month]}\")]").select(month)
        find(:xpath, "//select[contains(@id, \"_#{FIELDS[:day]}\")]").select(day)
      end

    end

    def select_time(field, options = {})
      require "time"
      time_parse = Time.parse(options[:with])

      hour = time_parse.hour.to_s.rjust(2, '0')
      minute = time_parse.min.to_s.rjust(2, '0')

      within("div##{field}") do
        find(:xpath, "//select[contains(@id, \"_#{FIELDS[:hour]}\")]").find(:xpath, "option[contains(@value, '#{hour}')]").select_option
        find(:xpath, "//select[contains(@id, \"_#{FIELDS[:minute]}\")]").find(:xpath, "option[contains(@value, '#{minute}')]").select_option

      end

    end

    def select_datetime(field, options = {})
      select_date(field, options)
      select_time(field, …
Run Code Online (Sandbox Code Playgroud)

ruby cucumber capybara ruby-on-rails-3 ruby-1.9.2

12
推荐指数
1
解决办法
2万
查看次数

在非Rails Ruby应用程序中包含Rails时间助手

我主要使用Rails的开发中,我爱1.hour.from_now,34.minutes24.megabytes助手认为Rails已经内置到它.但是现在我正在构建一个具有这些帮助程序的Ruby应用程序会很好.是否可以在Ruby应用程序中获取这些帮助程序而无需引入整个Rails框架?

ruby ruby-on-rails

6
推荐指数
1
解决办法
346
查看次数

无法让Intern运行Node.js模块

我正在尝试测试实习生,看看它是否适合测试框架.我试图在实习生中测试以下代码.

var HelloWorld;

HelloWorld = (function () {

  function HelloWorld (name) {
    this.name = name || "N/A";
  }

  HelloWorld.prototype.printHello = function() {
    console.log('Hello, ' + this.name);
  };

  HelloWorld.prototype.changeName = function(name) {
    if (name === null || name === undefined) {
      throw new Error('Name is required');
    }
    this.name = name;
  };

  return HelloWorld;

})();

exports = module.exports = HelloWorld;
Run Code Online (Sandbox Code Playgroud)

该文件位于'js-test-projects/node/lib/HelloWorld.js'中,Intern位于'js-test-projects/intern'.我正在使用实习生的1.0.0分支.每当我尝试包含文件并运行测试时,在"默认为控制台记者"之后我都没有得到任何输出.这是测试文件.

define([
  'intern!tdd',
  'intern/chai!assert',
  'dojo/node!../lib/HelloWorld'
], function (tdd, assert, HelloWorld) {
  console.log(HelloWorld);
});
Run Code Online (Sandbox Code Playgroud)

intern

6
推荐指数
1
解决办法
2460
查看次数