如何检查一个方法是否从同一类调用另一个方法?

问题描述 投票:1回答:1

我正在尝试使用Minitest为课程设置单元测试。在此类中,某些方法调用其他方法。

这是我正在尝试做的非常简化的概念。

require 'minitest/autorun'

class Book
    def caller
        self.called
    end

    def called
        nil
    end
end

class BookTest < Minitest::Test
    def test_checkCaller
        fake = Minitest::Mock.new
        fake.expect(:caller, nil)
        fake.caller
        assert(fake.verify,msg=nil)
    end
end

此返回:

Run options: --seed 24362

# Running:

.

Finished in 0.002716s, 368.1771 runs/s, 368.1771 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

我什至不确定这是否在做我想要的。我要确认的是called正在调用caller

[后来我也想测试一下,当我向caller发送特定消息时,called将运行某个代码,例如将该消息添加到队列中。

[[在任何人将其标记为重复之前,请确保假定的帖子实际上与我所要求的相同,并且最好对我的问题有一个合理的答案。我看过多个类似的帖子,每个帖子都略有不同。]

谢谢!

ruby mocking minitest
1个回答
2
投票

我喜欢使用名为spy的宝石。这样,您基本上可以在方法上spy并查看它是否被调用。 https://github.com/ryanong/spy

© www.soinside.com 2019 - 2024. All rights reserved.