如果我有一个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
关注这个问题:问题在这里
@JsonIdentityReference(alwaysAsId = true)并且
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)在序列化结束时效果很好,但是在反序列化时不太好,因为它无法解析对象ID引用.
有没有办法让这个反序列化?编写自定义反序列化器似乎有点矫枉过正.
现在IntelliJ 12.1已经出来了,我希望能够将调试器附加到'gradle run'应用程序并让它在断点处停止.我已经尝试了右键单击运行并选择调试它,并按照此答案中的建议设置GRADLE_OPTS环境变量:
并远程连接调试器,工作正常,但没有一个断点断点.我肯定错过了什么.
我对在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类型列表似乎很奇怪,但我猜他们的目的似乎是不相交的.
更具体地说,我应该如何知道哪些注册新类型?
谢谢!
我的测试:
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.
任何想法都赞赏.
如何在角度指令测试中选择一个选项?
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) 我无法删除名称中包含短划线的远程分支.
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)