首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每次测试后更改rspec instance_double返回值

在每次测试后更改rspec instance_double返回值
EN

Stack Overflow用户
提问于 2015-01-21 01:12:33
回答 1查看 1K关注 0票数 0

我正在用Rspec测试一个Ruby类。我希望在这两个上下文之间更改实例double的返回值,即,我希望tallied_data.a_conv、tallied_data.a_nonconv等为"when A is winner“上下文返回不同的值。有没有什么方法可以做到这一点,而不必创建新的instance_double并重复第3-9行中的所有代码?有没有不同的方法来解决这个问题?

代码语言:javascript
复制
describe ABSplitTest do
  describe "#test_winner" do
  let(:tallied_data) do
    instance_double("ABDataSummary", 
      a_conv: 50, a_nonconv: 51, 
      b_conv: 52, b_nonconv: 53,
      to_h: { a: { conv: 50, nonconv: 51 }, b: { conv:52, nonconv: 53 } }
    )
  end
  subject(:sample_test) { ABSplitTest.new(tallied_data) }

  context "when there is no winner" do
    it "returns that there is no clear winner" do
      expect(sample_test.test_winner).to \
        eq("No winner at 0.05 significance")
    end
  end

  context "when A is winner" do
    it "returns that A is winner" do
      expect(sample_test.test_winner).to \
        eq("No winner at 0.05 significance")
    end
  end
EN

回答 1

Stack Overflow用户

发布于 2015-01-21 02:03:16

不太清楚您在测试中做了什么,以及它与tallied_data有何关系,但您可以通过let在您的上下文中设置特定值。let值直到第一次使用时才会被解析,因此如果需要,您可以根据内部上下文中的值来组合它们。

例如:

代码语言:javascript
复制
describe ABSplitTest do
  describe "#test_winner" do
    let(:tallied_data) do
      instance_double("ABDataSummary",
        a_conv: a_conv, a_nonconv: 51,
        b_conv: 52, b_nonconv: 53,
        to_h: { a: { conv: 50, nonconv: 51 }, b: { conv:52, nonconv: 53 } }
      )
    end
    subject(:sample_test) { ABSplitTest.new(tallied_data) }

    context "when there is no winner" do
      let(:a_conv) { 50 }
      it "returns that there is no clear winner" do
        expect(sample_test.test_winner).to \
          eq("No winner at 0.05 significance")
      end
    end

    context "when A is winner" do
      let(:a_conv) { 70 }
      it "returns that A is winner" do
        expect(sample_test.test_winner).to \
          eq("No winner at 0.05 significance")
      end
    end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28051256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档