小编Dmy*_*iak的帖子

ASP.NET MVC2中的测试视图(ala RSpec)

我真的很想念独立于控制器测试视图的能力.RSpec的方式.

我想要做的是在渲染视图上执行断言(不涉及控制器!).为了做到这一点,我应该提供必需的Model,ViewData以及HttpContextBase中的一些细节(我们何时会摆脱HttpContext!).

到目前为止,我还没有找到任何允许这样做的东西.它也可能在很大程度上取决于所使用的ViewEngine.

视图可能包含的内容列表如下:

  • 部分视图(可能深层嵌套).
  • 母版页(或其他视图引擎中的类似页面).
  • Html助手生成链接和其他元素.
  • 通常几乎任何常识的范围:).

另请注意,我不是在谈论客户端测试,因此Selenium根本就与它无关.它只是简单的.NET测试.

那么有没有选择实际进行视图测试?

谢谢,
德米特里.

asp.net-mvc unit-testing rspec views asp.net-mvc-2

9
推荐指数
1
解决办法
858
查看次数

在activesupport回调中堆栈级别太深

我正在SystemStackError使用Rails 3应用程序.

我拥有的所有信息都是无用的一行堆栈跟踪(取自日志):

SystemStackError (stack level too deep):
  activesupport (3.2.3) lib/active_support/callbacks.rb:409
Run Code Online (Sandbox Code Playgroud)

所以问题是我如何看到完整的堆栈跟踪

注意:我不关心为什么会发生这种情况,我只想知道它发生的地方.

使用:Rails 3.2.3,Unicorn.

谢谢.

ruby activerecord ruby-on-rails activesupport stack-trace

8
推荐指数
2
解决办法
3102
查看次数

如何在Rails中将目录加载黑名单?

我想在运行测试时禁用ActiveAdmin.

所以我添加require: false到Gemfile并检查if defined?(ActiveAdmin)路由和初始化程序.

但是Rails仍然会加载模型形式,app/admin因此我得到的错误类似于/app/admin/admin_user.rb:1:in':uninitialized constant ActiveAdmin(NameError)`

app/admin目录"黑名单" 加载的最佳方法是什么?

ruby gem dependencies ruby-on-rails activeadmin

8
推荐指数
1
解决办法
973
查看次数

如果可以构造,为什么要模拟HttpContext?

我总是在ASP.NET中以某种方式伪装/模拟/存根HttpContext(在ASP.NET MVC/MonoRail中更容易).

但是我可以看到HttpContext本身可以很容易地构造,字面上只有几行代码.

var tw = new StringWriter();
var workerReq = new SimpleWorkerRequest("/webapp", @"c:\here\there\wwwroot", "page.aspx", tw);
var context = new HtpContext(workerReq);
Run Code Online (Sandbox Code Playgroud)

如果我们将这个代码包装成这样的东西它应该工作正常,我们甚至可以使用它来渲染ASPX:

using(Simulate.HttpContext()) {
  HttpContext.Current.BlaBla;
}
Run Code Online (Sandbox Code Playgroud)

所以问题是:

  1. 不应该做的原因.
  2. 它应该被完成的原因.
  3. 为什么它没有被广泛使用(事实上我不记得有关它的任何帖子).

我记得Phill Haack使用Reflection hacks构建HttpContext的帖子.
但它似乎并不需要.

干杯,
德米特里.

asp.net testing asp.net-mvc mocking httpcontext

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

从运行时在数据库中呈现ASPX页面

假设代码如下:

public class DynamicAspxHandler : IHttpHandler {
    bool IHttpHandler.IsReusable { get { return false; } }

    void IHttpHandler.ProcessRequest(HttpContext httpContext) {
        string aspxContent = PlainASPXContent();
        Page page = CreatePage(httpContext, aspxContent);
        page.ProcessRequest(httpContext);
    }

    Page CreatePage(HttpContext context, string aspxContent) {
        // How to implement this?
    }
}
Run Code Online (Sandbox Code Playgroud)

如何实现CreatePage方法基于ASPX的纯字符串内容实例化页面?

注意,ASPX字符串本身可以包含对磁盘上已存在的MasterPage的引用.

我意识到这一点必然存在巨大的性能问题,但在这个阶段我只想知道如何做到这一点.显然我必须缓存结果.

谢谢.

.net asp.net dynamic-compilation httphandler

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

stylesheet_link_tag(:all)在Heroku上生成对`all.css`的引用

我有stylesheet_link_tag(:all)我的布局.

它在本地计算机上的行为与预期相同,即使我在生产环境中运行它(rails s -e production).

按照预期,我的意思是它会发出现有样式表的所有链接,而不会将它们连接到all.css,并且它不会发出链接all.css.

但是当我将它部署到Heroku时,结果是相同的,加上一个all.css开头的链接.这是我不想要和不期望的,特别是当本地机器上的生产环境不发出它时.

所以问题是我如何all.css在没有手动指定所有文件的情况下摆脱Heroku上的链接?

谢谢.

ruby ruby-on-rails heroku stylesheet

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

建议关于现代CSS和设计实践的好书/资源

理想情况下,它会不断更新.

某种CSS和设计周刊是另一个奖励.

我想为自己解决的问题是:

  1. 深入理解 CSS的所有技巧(不仅仅是如何使用来自Internet的随机片段进行样式化).
  2. 及时了解更新(Chrome会定期更新,Firefox就是,甚至丑陋的兄弟IE也会开始这样做).
  3. 连接UX和前端开发人员.在需要时"使用酷酷的黑客",而不是在需要时使用.

html javascript css user-experience

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

在rails中生成javascript的完整URL(类似于javascript_path,但是url)

如何生成javascript文件的绝对链接.

我假设应该有类似下面的那个(遗憾的是似乎没有):

javascript_url 'main' # -> 'http://localhost:3000/javascripts/main.js'
Run Code Online (Sandbox Code Playgroud)

代替:

javascript_path 'main' # -> '/javascripts/main.js'
Run Code Online (Sandbox Code Playgroud)

我需要绝对URL,因为该javascript文件将用于书签.
另外我需要相同的css文件.

谢谢,
德米特里.

ruby url ruby-on-rails helpers

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

如果没有可用的标签,则运行标记的规范或ALL

我正在使用rspec和黄瓜守卫.要连续运行所选的规格,我只需使用focus标签来确定我想要处理的内容.

但问题是,如果没有该标签的规格,我想运行所有规格.

我怎样才能做到这一点?

注意::我知道所有RSpec选项.所以在阅读完问题后再回复.

ruby tdd rspec ruby-on-rails cucumber

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

更改模型的输入名称

使用ActiveAttr:

class Filter
  include ActiveAttr::Model
  attribute term
  # Overriding to_key, to_param, model_name, param_key etc doesn't help :(
end

class SpecialFilter < Filter
end
Run Code Online (Sandbox Code Playgroud)

如何覆盖ActiveModel以生成所有子类(相同)预定义输入名称

= form_for SpecialFilter.new, url: 'xx' do |f|
  = f.text_field :term
Run Code Online (Sandbox Code Playgroud)

所以,而不是<input name='special_filter[term]' />我需要得到<input name='filter[term]' />

注意:场景更复杂(使用simple_form和radio/checkboxes/dropdown等),因此请不要建议更改类的名称或类似的解决方法.我确实需要使用表单生成器使用的一致名称.

ruby ruby-on-rails activemodel ruby-on-rails-3 simple-form

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