存根创建用户后调用的方法

网络

我试图存根代码中的方法:

def create
  @user = Xaaron::User.new(user_signup_params)
  if save_new_user(@user)
    user = User.find(@user.first_name.parameterize)
    user_info_to_publish = {user_name: user.user_name, first_name: user.first_name, auth_token: user.auth_token, email: user.email}
    response = Xaaron::Publishers::Users.publish_new_user(user_info_to_publish)

    if response == 200
      user.set_published_user(true, false, 'create')
      redirect_to login_path
    else
      user.set_published_user(false, true, 'create')
      flash[:error] = 'Something went wrong in publishing your information to the applications you can interact with. We are aware of the issue and are on it.'
      redirect_to login_path
    end
  else
    render :new
  end
end

有问题的方法是Xaaron::Publishers::Users.publish_new_user(user_info_to_publish)我需要对这个方法进行存根,以便可以检查以确保一切正常。

有问题的测试是:

it "should create a new user" do
  expect(Xaaron::Publishers::Users).to receive(:publish_new_user).with(
    {first_name: @user.first_name, user_name: 'johnq', email: @user.email, auth_token: @user.auth_token}
  ).and_return nil

  post :create, user: {
    first_name: @user.first_name, user_name: 'johnq',
    email: @user.email, email_confirmation: @user.email,
    password: 'SamplePassword', password_confirmation: 'SamplePassword'
  }

  expect(response).to redirect_to login_path
end

由于一件事,该测试将失败auth_token我已将其设置为在数据库中设置用户之前生成的。@user通过完成:@user = FactoryGirl.build(:user)

我将如何更改测试以使其通过?

更新

我应该包括以下内容:

测试失败,因为:

  Xaaron::Publishers::Users received :publish_new_user with unexpected arguments
         expected: ({:first_name=>"Adam", :user_name=>"johnq", :email=>"[email protected]"})
              got: ({:user_name=>"johnq", :first_name=>"Adam", :auth_token=>"KrGN3zu3kQJQdyh8JHl_XA", :email=>"[email protected]", :auth_token=>nil})
菲利普·霍尔斯特伦

我是否理解正确,问题是规范中可用的auth_token不是用于进行Xaaron调用的那个?如果是这样,您可以将规范更改为仅检查某些参数。也就是说,检查除auth_token之外的所有内容。

expect(Xaaron::Publishers::Users).to receive(:publish_new_user).with(
  hash_including(first_name: @user.first_name, user_name: 'johnq', 
                 email: @user.email)).and_return nil

请参阅:http//www.rubydoc.info/gems/rspec-mocks/frames#Argument_Matchers

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

首次调用存根方法后,Mockito存根消失

来自分类Dev

WordPress的创建用户后,表单提交与ajax调用

来自分类Dev

在Buddypress中创建组或用户后如何调用函数

来自分类Dev

实际方法被调用而不是存根版本

来自分类Dev

存根所有在类上调用的方法

来自分类Dev

如何在存根上调用真实方法

来自分类Dev

sinon 存根在 then 调用 promise 中执行的方法

来自分类Dev

后创建新对象方法调用的控制调用

来自分类Dev

创建新用户时未调用beforeCreate方法

来自分类Dev

创建类的新实例后如何调用方法?

来自分类Dev

创建类的新实例后如何调用方法?

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

如何存根初始化方法中调用的方法

来自分类Dev

Sinon-如何对要测试的方法调用的方法存根

来自分类Dev

Mockito在存根时从超类调用真实方法

来自分类Dev

测试RSpec中某个输入是否调用了存根方法

来自分类Dev

在wordpress项目中的phpunit中存根方法调用

来自分类Dev

OCMock:OCMPartialMock对象调用实际方法而不是存根

来自分类Dev

测试RSpec中某个输入是否调用了存根方法

来自分类Dev

assert_has_calls不对方法调用进行存根

来自分类Dev

从另一个文件调用 Sinon 存根方法

来自分类Dev

Python:从模块创建用户定义方法的列表,并通过用户输入引用/调用它们

来自分类Dev

Rspec如何对在方法中创建的对象进行存根

来自分类Dev

创建100个用户后,无用户

来自分类Dev

创建线程后调用execv

来自分类Dev

OnPrepareOptionsMenu 在菜单创建后被调用

来自分类Dev

延迟后调用方法

来自分类Dev

如何创建存根函数?

来自分类Dev

调用方法后C#代码重复用户输入提示

Related 相关文章

热门标签

归档