小编psc*_*egr的帖子

如何使用RSpec和Devise/CanCan进行集成测试?

如果我有一个Devise模型User,其中只允许那些具有role:admin的用户查看某个url,我该如何编写RSpec集成测试来检查该url的状态是否返回200?

def login(user)
  post user_session_path, :email => user.email, :password => 'password'
end
Run Code Online (Sandbox Code Playgroud)

在这个问题的答案中,这是伪建议:在请求规范中对验证进行验证,但我不能为我的生活让它与设计一起工作.当自动检查具有正确权限的Ability时,CanCan正在接收nil用户.

在集成规范中无法访问控制器,因此我无法存根current_user,但我想做类似的事情.

describe "GET /users" do
  it "should be able to get" do
    clear_users_and_add_admin #does what it says...
    login(admin)
    get users_path
    response.status.should be(200)
  end
end
Run Code Online (Sandbox Code Playgroud)

注意!!!:自提出问题以来,这一切都发生了变化.目前最好的方法是:http://github.com/plataformatec/devise/wiki/How-To : -Test-with-Capybara

rspec ruby-on-rails devise cancan

36
推荐指数
3
解决办法
3万
查看次数

杰克逊反序列化JsonIdentityReference(alwaysAsId = true)

关注这个问题:问题在这里

@JsonIdentityReference(alwaysAsId = true)并且 @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)在序列化结束时效果很好,但是在反序列化时不太好,因为它无法解析对象ID引用.

有没有办法让这个反序列化?编写自定义反序列化器似乎有点矫枉过正.

java json jackson

16
推荐指数
1
解决办法
5195
查看次数

使用Intellij在gradle项目中设置断点

现在IntelliJ 12.1已经出来了,我希望能够将调试器附加到'gradle run'应用程序并让它在断点处停止.我已经尝试了右键单击运行并选择调试它,并按照此答案中的建议设置GRADLE_OPTS环境变量:

使用IntelliJ调试Gradle插件

并远程连接调试器,工作正常,但没有一个断点断点.我肯定错过了什么.

java intellij-idea gradle

7
推荐指数
1
解决办法
7871
查看次数

Rails中mime类型的处理是什么?

我对在Rails中处理mime类型的不同模块的数量感到困惑.我想到的有三个,如果有人能为我理顺这一点,我将不胜感激.

1)Mime :: Type(用于respond_to)

Mime::Type.register "text/richtext", :rtf
Run Code Online (Sandbox Code Playgroud)

2)MIME :: Types(来自mime-types gem)

MIME::Types[/ogg/, :complete => true]
Run Code Online (Sandbox Code Playgroud)

3)Rack :: Mime :: MIME_TYPES(用于提供内容)

Rack::Mime::MIME_TYPES.merge!({".ogg" => "audio/ogg"})
Run Code Online (Sandbox Code Playgroud)

这三个是完全分开的还是它们之间有什么联系?维护3个不同的mime类型列表似乎很奇怪,但我猜他们的目的似乎是不相交的.

更具体地说,我应该如何知道哪些注册新类型?

谢谢!

ruby-on-rails mime-types

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

isElementPresent的简单量角器测试失败,不支持定位器策略

我的测试:

it('should allow login', function() {
  browser.get('index.html');

  $('#username').sendKeys('administrator');
  $('#password').sendKeys('password');
  $('#login').click();

  var logout = $('#logout');
  expect($p.isElementPresent(logout)).to.eventually.be.true;
}); 
Run Code Online (Sandbox Code Playgroud)

但这错误:

Error: Unsupported locator strategy: click
  at Error (<anonymous>)
  at Function.webdriver.Locator.createFromObj (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/locators.js:97:9)
  at Function.webdriver.Locator.checkLocator (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/locators.js:111:33)
  at webdriver.WebDriver.findElements (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:805:31)
  at webdriver.WebDriver.isElementPresent (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:787:29)
  at Protractor.isElementPresent (/usr/local/lib/node_modules/protractor/lib/protractor.js:476:22)
  at /Users/pschuegr/wt/client/e2e/login_test.js:26:15
Run Code Online (Sandbox Code Playgroud)

奇怪的是,它指向isElementPresent行,而不是点击的行.我对webdriver很新,所以如果我错过了一些明显的东西,请道歉.我正在使用mocha框架(这意味着量角器的金丝雀版本),fwiw.

任何想法都赞赏.

mocha.js angularjs protractor

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

Angular指令测试选择选项

如何在角度指令测试中选择一个选项?

 var options = elem.find('#test-code-select option');
 expect(angular.element(options[0]).text()).to.equal('234');
 expect(angular.element(options[1]).text()).to.equal('236');
Run Code Online (Sandbox Code Playgroud)

这些工作正常,但我如何手动强制选择一个选项?

angular.element(options[1]).click(); //nope
angular.element(options[1]).trigger('click'); //nope
angular.element(options[1]).attr('selected', true); //nope
Run Code Online (Sandbox Code Playgroud)

编辑:

指令模板包含一个内部ng模型的选择,我怀疑这是问题的原因:

<select id='test-code-select' ng-options='code as code for code in codeList' ng-model='code'>
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-directive

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

使用名称中的短划线删除git上的远程分支

我无法删除名称中包含短划线的远程分支.

git push origin :paul-ms
error: unable to push to unqualified destination: paul-ms
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@github.com:blah/blah.git'

git push origin --delete 'paul-ms'
error: unable to push to unqualified destination: paul-ms
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are …
Run Code Online (Sandbox Code Playgroud)

git

3
推荐指数
1
解决办法
638
查看次数