小编Kar*_*ran的帖子

如何存根特定模拟实例的所有方法

我有一个由第三方处理的特定模拟.我只想检查是否已返回相同的模拟.

但是,第三方调用数组方法并保存我的测试并不真正关心的方法.有没有办法告诉我的mock它希望/ stub所有方法都用于特定的模拟实例?

例如.

user = mock(User)
user.stub_all
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑

有关该问题的更多信息:

测试:

  it "creating an invitation should return invitation" do
    invitation = mock_model(Invitation)
    invitation.stub(:[]=)
    invitation.stub(:save)
    Invitation.stub(:create).and_return(invitation)
    @user.create_invitation
    @user.create_invitation.should == invitation        
  end
Run Code Online (Sandbox Code Playgroud)

正在测试的代码:

 def create_invitation
    invitation = Invitation.create
    self.invitations.push(invitation)
    return invitation
  end
Run Code Online (Sandbox Code Playgroud)

我需要模拟以下与我测试的内容没有直接关系的内容:

invitation.stub(:[]=)
invitation.stub(:save)
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails mocking stubbing

4
推荐指数
1
解决办法
2665
查看次数

Ruby on Rails - 设计注册链接无效 - 未定义方法`user_registration_path'

此问题先前已报告过,但我仍无法找到解决方法.

我已将插件Devise安装到我的新RoR项目中.当我点击注册链接时,我被重定向到以下路线:

HTTP://本地主机:3000 /用户/注册/ sign_up

但是,我收到以下错误:

undefined method `user_registration_path' for #<#<Class:0x007fd5d3503d58>:0x007fd5d3b0dcd0>
Run Code Online (Sandbox Code Playgroud)

提取的来源(第5行):

2:   <h1>Sign up</h1>
3: </div>
4: 
5: <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
6:   <%= f.error_notification %>
7: 
8:   <div class="inputs">
Run Code Online (Sandbox Code Playgroud)

我的路线产生以下内容:

    new_user_session GET    /users/sign_in(.:format)              devise/sessions#new
        user_session POST   /users/sign_in(.:format)              devise/sessions#create
destroy_user_session GET    /users/sign_out(.:format)             devise/sessions#destroy
            password POST   /users/password(.:format)             devise/passwords#create {:name_prefix=>:user}
        new_password GET    /users/password/new(.:format)         devise/passwords#new {:name_prefix=>:user}
       edit_password GET    /users/password/edit(.:format)        devise/passwords#edit {:name_prefix=>:user}
                     PUT    /users/password(.:format)             devise/passwords#update {:name_prefix=>:user}
                     POST   /users/registration(.:format)         devise/registrations#create {:name_prefix=>"user_registration"}
                 new GET    /users/registration/sign_up(.:format) devise/registrations#new {:name_prefix=>"user_registration"}
                edit …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise

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

Rails:update_attributes不会更新引用同一模型实例的任何其他现有实例

我意识到以下几点:

  user1 = User.create - creates a model with id 1 and age  is 0

  same_user = User.find(1)

  same_user.update_attributes(:age => 18)

  p same_user.age # prints out 18
  p user1.age # prints out 0
Run Code Online (Sandbox Code Playgroud)

为什么现有属性不从数据库中获取值?

attributes ruby-on-rails update-attributes

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

MVC .NET单元测试:如何测试参数从控制器发送到视图

我是MVC .NET的新手(我之前曾在Ruby On Rails上工作).

我想知道如何编写单元测试来检查正确的参数是否传递到视图中.

public ActionResult Users()
{
  var users = userManager.GetUsers();
  return View(users);
}
Run Code Online (Sandbox Code Playgroud)

如何测试View已与用户列表一起传递?我只是模拟View静态方法还是有更好的方法?

谢谢!

unit-testing mstest controllers asp.net-mvc-3

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

如何在命令行上测试python代码

在编写和测试python方法时,我目前正在使用以下方法:

import foo as f
bar = f.bar()

bar.runMyMethodAndSeeIfItWorks()
Run Code Online (Sandbox Code Playgroud)

如果我在我的方法中更改某些内容,并且需要重新测试它,则必须执行以下操作:

f = reload(foo)
bar = f.bar()

bar.runMyMethodAndSeeIfItWorks()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个更简单的方法

python command-line module class reload

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

如何使用jQuery同步加载页面

目前我正在使用jQuery来选择我的索引页面应该加载什么,这取决于是否设置了cookie.

例如,如果设置了cookie,则index.html的body标签应加载hasCookie.html,如果未设置cookie,则加载noCookieSet.html.

我的索引页面目前有:

load user scripts
load styling scripts

<html><body></body></html>
Run Code Online (Sandbox Code Playgroud)

用户脚本具有检查cookie是否已设置的代码.如果是,我使用jQuery的加载将内容加载到正文中:

$(document.body).load('hasCookie.html')
Run Code Online (Sandbox Code Playgroud)

但是,由于这是异步执行的,因此在更新body标记之前已加载样式脚本,因此未对样式进行样式设置.

有没有办法同步加载,或者我应该以错误的方式接近这个?

编辑:如果它有帮助,样式脚本基本上是jQueryUI

html javascript jquery load

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

如何在不使用render:json的情况下在Rails中返回json对象

根据我的阅读,我可以使用以下代码响应json请求:

respond_to do |format|
  format.json { render json: t.response }
end
Run Code Online (Sandbox Code Playgroud)

我的问题是t.response已经是json格式 - 我认为我的应用程序正在破解,因为渲染json:将它重新转换为json.我该如何避免这种情况,只需返回t.response即可.

请注意,如果我只是将t.response作为控制器中的最后一行,则会呈现相应的视图 - 这显然不是json.

谢谢!

编辑:我试图让这个工作,所以我可以通过tropo发送短信.如果您之前使用过tropo,您对如何正确回复tropo有任何建议吗?

json ruby-on-rails

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

REXML :: ParseException没有有效的根

当我尝试发出json post请求时出现以下错误:

REXML::ParseException (The document "{\"user\":1,\"email\":\"some@email.com\"}:" does not have a valid root):
Run Code Online (Sandbox Code Playgroud)

不知道从哪里开始.

我的标题看起来像这样:

Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:38
Content-Type:application/x-www-form-urlencoded
Cookie:_washapp_session=SOME_COOKIE_STRING
Host:myapp.herokuapp.com
Origin:http://myapp.herokuapp.com
Referer:http://myapp.herokuapp.com/user/1/add_friends
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5
X-CSRF-Token:k5bxjBJ3SCMhe1ILfChoiy6qwkYfVsg0JYZV9KDnwIg=
X-Requested-With:XMLHttpRequest
Run Code Online (Sandbox Code Playgroud)

ajax post json ruby-on-rails rexml

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

System.NotSupportedException:不支持的表达式:p =>(p.UserProfileId == 1)

我有一个使用System.Func表达式的测试.它应该非常简单,但测试仍然失败.

测试:

  [TestMethod]
  public void GetUser()
  {
    var username = "john@resilientplc.com";
    var user = new User() { UserId = 1, Username = username, Password = "123456789" };

    someDataMock.Setup(s => s.GetUser(p => p.UserId == 1)).Returns(user);

    var result = userProfileModel.GetUser(user.UserId);
    Assert.AreEqual(user, result);
  }
Run Code Online (Sandbox Code Playgroud)

实现UserProfileModel:

public User GetUser(long userId)
{
  return someDataMock.GetUser(u => u.UserId == UserId);
}
Run Code Online (Sandbox Code Playgroud)

错误:

System.NotSupportedException:不支持的表达式:p =>(p.UserId == 1)

知道我的测试不正确吗?

c# unit-testing moq asp.net-mvc-3

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

Any_instance在模型中未定义

我正在写一个rspec测试 - 由于某种原因,我被告知方法any_instance是未定义的.我很惊讶,因为我在我的一个控制器rspec文件中有一个非常相似的期望 - 它工作正常.任何想法为什么会发生这种情况?

require 'spec_helper'

describe Subscriber do

  it {should belong_to :user}

  describe "send_message should use mobile to send message" do
    subscriber = Subscriber.new(:number => "123")
    Mobile.any_instance.should_receive(:send_sms).with("123")
    subscriber.send_message("hello!")
  end
end
Run Code Online (Sandbox Code Playgroud)

错误

/subscriber_spec.rb:9:in `block (2 levels) in <top (required)>': 
undefined method `any_instance' for Mobile:Class (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

我的rspec版本(取自我的gemfile)

gem"rspec-rails","> = 2.11.0",:group => [:development,:test]

谢谢!

rspec ruby-on-rails stubbing

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