小编Xer*_*ero的帖子

更好的三元条件

方法find_something可能会返回nil.在以下代码中,

something = find_something(id) ? find_something(id) : create_something(foo)
Run Code Online (Sandbox Code Playgroud)

find_something(id)被叫两次.这是我想要避免的气味.有没有办法避免这个表达式的冗余?

ruby

3
推荐指数
2
解决办法
127
查看次数

Mockito和回调返回“参数不同!”

我正在尝试在Android上使用Mockito。我想将其与一些回调一起使用。这是我的测试:

public class LoginPresenterTest {


private User mUser = new User();

@Mock
private UsersRepository mUsersRepository;

@Mock
private LoginContract.View mLoginView;

/**
 * {@link ArgumentCaptor} is a powerful Mockito API to capture argument values and use them to
 * perform further actions or assertions on them.
 */
@Captor
private ArgumentCaptor<LoginUserCallback> mLoadLoginUserCallbackCaptor;

private LoginPresenter mLoginPresenter;

@Before
public void setupNotesPresenter() {
    // Mockito has a very convenient way to inject mocks by using the @Mock annotation. To
    // inject the mocks in the test …
Run Code Online (Sandbox Code Playgroud)

junit android junit4 mockito

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

phpunit 必须是可遍历的或实现接口 Iterator

我正在尝试对我的服务进行单元测试,其中包含 symfony2 的依赖 Finder 组件(http://symfony.com/doc/current/components/finder.html)。

我越来越 :

[异常] Mock_Finder_91776c5c::getIterator() 返回的对象必须是可遍历的或实现接口 Iterator

服务 :

public function getFile($fileName, $path = '/')
    {

        if($this->wrapper == null || $this->connection == null)
            throw new LogicException("call method setFTP first");

        // get file on ftp server
        $this->connection->open();
        $downloadComplete = $this->wrapper->get($this->tmpDir . $fileName, $path . $fileName);
        $this->connection->close();

        if($downloadComplete == false)
            return false; // TODO exception ?

        // return file downloaded
        $this->finder->files()->in(__DIR__);
        foreach ($this->finder as $file) {
            return $file;
        }

        return false; // TODO exception ?

    } …
Run Code Online (Sandbox Code Playgroud)

phpunit mocking symfony

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

提高Rails中对象名的可读性

上下文

鉴于在Rails上命名对象的约定是这样的:

/app/models/foo/bar.rb => class Foo::Bar
Run Code Online (Sandbox Code Playgroud)

如果我有一个文件夹结构:

/app/models/foo/bar/object1.rb
/app/models/foo/bar/object2.rb
/app/models/foo/main.rb
Run Code Online (Sandbox Code Playgroud)

要从我的主要调用此对象,我必须这样做:

class Foo::Main

  def some_method
    Foo::Bar::Object1.new
    Foo::Bar::Object2.new
  end

end
Run Code Online (Sandbox Code Playgroud)

这工作很好.但在这里我的问题:

有没有办法提高对象名称可读性

鉴于我Foo::Main在同一名称空间中Foo; 有没有办法用更短的名字来称呼他们(Foo::Bar::Object1.newFoo::Bar::Object2.new)?

我想他们的名字Bar::Object1.new,并Bar::Object2.new在这方面(或Object1.newObject2.new)

预期

class Foo::Main

  def some_method
    Bar::Object1.new
    Bar::Object2.new
  end

end
Run Code Online (Sandbox Code Playgroud)

这段代码是我所期望的例子,但它不起作用.

ruby ruby-on-rails

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

Firebase android 订购

我无法在日期字段(时间戳)上使用 orderByChild 订购结果

这里的数据结构:

在此处输入图片说明

和代码:

  DatabaseReference mMessagesRef = FirebaseDatabase.getInstance().getReference().child("messages")
                .child(mConversationId).getRef()
                .orderByChild("date").getRef();
        mMessagesRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                for(DataSnapshot data: dataSnapshot.getChildren()){
Run Code Online (Sandbox Code Playgroud)

查询返回了值,但不是按日期排序,而是按键返回。

android firebase firebase-realtime-database

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

FactoryGirl电子邮件已被收取

我试图与FactoryGirl实例化多个对象(具有唯一电子邮件的来宾)

  guests = create_list(:guest, 3)
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:

 Failure/Error: guests = create_list(:guest, 3)

 ActiveRecord::RecordInvalid:
   Validation failed: Email has already been taken
Run Code Online (Sandbox Code Playgroud)

这是我的工厂:

FactoryGirl.define do
  factory :guest do
    email Faker::Internet.unique.email
    firstname 'John'
    lastname  'Doe'
    password 'test'
    password_confirmation 'test'

    factory :guest_with_bookings do
      email "#{SecureRandom.hex}@test.com"
      transient do
        bookings_count 2
      end
      after(:create) do |guest, evaluator|
        create_list(:booking, evaluator.bookings_count, guests: [guest])
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

即使使用Faker :: Internet.unique.email,当我尝试创建1位以上的访客时,它也不起作用

ruby ruby-on-rails factory-bot

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

Google Cloud Stackdriver和monolog Symfony

我正在使用Google Cloud(GKE),我想将他们的系统用于日志和监视器(Stackdriver).我的项目是在php Symfony3下.我正在搜索如何登录到我的symfony项目的一些日志.

我看到有一个官方的lib:

https://github.com/GoogleCloudPlatform/google-cloud-php

还有一个PSR-3级:

http://googlecloudplatform.github.io/google-cloud-php/#/docs/v0.20.1/logging/psrlogger

我的问题是,如何将我的config.yml与monolog集成?

php symfony monolog google-cloud-platform google-cloud-logging

0
推荐指数
1
解决办法
1711
查看次数

as_json和动态方法的使用

我有一个简单的课程(没有 Rails)

class Tax

  attr_reader :guest_age

  def initialize(guest_age)
    @guest_age = guest_age
  end

  def amount
    0
  end

end
Run Code Online (Sandbox Code Playgroud)

该对象有一个“金额”自定义方法,我希望在执行此操作时将金额结果包含在 json 中:tax.as_json(methods: :amount)

但这不起作用,这仅返回带有变量的对象。

我现在得到的:

{“guest_age”:18}

我期待的是:

{ “guest_age”:18,“金额”:0 }

请参阅https://apidock.com/rails/ActiveModel/Serializers/JSON/as_json

笔记 :

我想保留这个对象而不依赖于活动记录库。

ruby ruby-on-rails

0
推荐指数
1
解决办法
4168
查看次数