问题标签 [expectations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
62 浏览

ruby - 确保在测试期间的某个时刻使用 args 调用方法

我想确保在测试期间的某个时候Foo.bar调用我的方法。true到目前为止,我只能断言反对第一次调用Foo.bar. 我需要反对任何电话

这是我到目前为止但不起作用的:

它首先失败了,Foo.bar因为“假”不符合我的“真”期望。由于在测试期间的某个Foo.bar("true")时刻被调用,您将如何重写它以通过?

0 投票
1 回答
2898 浏览

java - 模拟静态方法调用时出现 UnexpectedInvocation

我正在尝试使用 JMockit 测试静态方法。此方法使用实用程序类静态方法。

当测试运行时,JMockit 抱怨并抛出以下异常:

这是导致抛出异常的测试 -

一些令人困惑的事情是预期和实际字符串(如异常中报告的)相同 -

被测方法在这里——

上述方法引用的实用程序类是这样的 -

谁能看到这里发生了什么?

0 投票
1 回答
4291 浏览

java - 停止在 Jmockit 中模拟

我正在使用 JMockit。我在嘲笑一种方法。我希望在调用实际方法之后调用一次模拟方法。我正在提供我正在使用的代码。

这是我正在测试的课程

这是测试课。

当我使用 new Expectations(classToMockMockedInstance) 它抛出这个异常

0 投票
1 回答
601 浏览

ruby - RSpec 如何允许和期望为多个调用产生意外结果

我正在尝试编写一个测试来防止你做同样的事情两次(在这种情况下,在 tictactoe 中在同一个方格上玩两次),但是 RSpec 语法让我感到困惑,我在他们的文档中看不到解决方案。我尝试了一些没有成功的方法,这让我意识到我并不像我想象的那样理解 RSpec 语法。

因为测试是针对递归方法的,所以很多错误不像我想要的那样具有描述性,因为它们会导致程序崩溃,这使得很难隔离问题。

我尝试测试/创建的方法最初看起来像这样:

def your_turn

结尾

(如果没有成功放置标记,play_on 返回 nil)

在这种情况下,我正在测试一个模块,your_turn、get_row 和 get_square 是该模块的方法,但 play_on 和 square_at 是它要集成到的类中的方法,所以我在必要时进行存根(同上 get 方法,因为我不想得到 RSpec 的提示)。

我尝试的第一个测试是这样的:

“如果玩家不能在那个方格上玩,它会重复这个过程”做

结尾

测试失败,并说它只收到过一次。我期望这种展开的方式是在最初的 your_turn 调用中,RSpec 将存根 play_on,返回 nil,设置 unless 语句并重复 your_turn 调用 - 之后它将返回一个符号并防止任何进一步的递归。我误解了什么?

经过那次努力,我想出了一个似乎有效的怪物,但我不完全确定为什么:

allow(human).to receive(:get_row).and_return(1,2)

allow(human).to receive(:get_square).and_return(2,2)

allow(human).to receive(:square_at).with(1, 2).and_return(:nil)

allow(human).to receive(:square_at).with(2, 2).and_return(:square)

allow(human).to receive(:play_on).with(:square).and_return(:square)

期望(人类)。接收(:play_on)。两次

human.your_turn

这里的麻烦(除了丑陋之外)是我让它通过蛮力而不是理解来工作,而且有几件事我不确定:

  • 为什么我不能在没有提示返回 RSpec 的情况下删除例如前两行?由于在第三行和第四行我将调用 get_ 方法的方法 square_at 存根,为什么它们仍然被调用?
  • 同样,第五行第三和第四行似乎涵盖了第三和第四行,但我最初有最后一个“允许”返回(nil,:square),希望它能起作用。最终调用 your_turn 三次,而我期望两次,所以我删除了 nil 并且它通过了。我解析它的方式,没有 nil,play_on 将立即返回 :square,因此不会触发除非逻辑并且该方法将终止。再说一遍,我误解了什么?
  • 是否有处理两条“square_at”允许行的更简单的方法?

谢谢大家,

萨沙

0 投票
1 回答
209 浏览

mocking - 模拟将根据调用顺序返回不同结果的方法

我想模拟一个方法,该方法A在第一次调用B时返回,第二次调用时返回,所有后续调用都将返回C。我假设我可以使用$this->any()$this->at()获得期望的期望,但它似乎$this->any()总是优先。

有没有办法做到这一点?

0 投票
1 回答
621 浏览

c++ - 计算变化数组中的预期反转次数

问题:我们有一个大小数组,n我们最多可以执行K每个操作可以执行的操作

  1. 将反转次数减少 1。
  2. 对整个数组进行随机洗牌。

我的问题是以K这样一种方式执行操作,以使最终数组中的预期反转次数最小化。

约束:
100 个测试用例,
1 < n < 100
1 < K < n(n-1)/2

我的方法:我正在考虑动态编程解决方案。我可以使用马洪数计算e在大小数组中精确反转的概率。我还逐行n填充数组,表示在执行操作后数组中具有反转的最小预期反转,然后使用它我可以为数组中所有可能的反转生成最小预期值。dp[k+1][1+n(n-1)/2]dp[i][j]ji(i+1)<sup>th</sup>

由于 c++ 中双精度数的限制,这种方法的问题是概率不准确,并且该算法O(kn<sup>2</sup>)适用于每个非常慢的测试用例。

例如:在大小为 100 = ~
的数组中没有反转的概率(我认为这里缺乏精度)。1.0/factorial(100)10<sup>-160</sup>

我认为有一些准确和更有效的方法。请提出一些想法。

谢谢

0 投票
1 回答
154 浏览

java - 列出带有约束的集合中所有可能和的总和

我很想知道以下内容:

给定一个包含 N 个元素的集合,我和我的朋友正在玩游戏。我总是先行动。我们只能以 50% 的几率移除第一个或最后一个元素。我们在游戏中交替轮流。如果只剩下一个元素,我们可以肯定地移除它。我能收集到的预期总和是多少?

我的做法:

由于在所有情况下获得可能和的概率都是相等的,因此我们只需要计算所有可能和的总和,然后将其乘以 (0.5)^N/2。

我尝试使用递归来计算所需的总和:

但这种方法似乎不起作用。我该怎么办?

完整功能如下:

0 投票
1 回答
17417 浏览

c++ - GoogleMock:如何准确地期待一个带有特定参数的调用,并查看失败的诊断?

也许是一个技巧问题,我的问题是,如果我写:

...并且方法handleMessage被调用一次,但使用不同的参数(不是aSpecificMessage),那么失败看起来像:

Google Mock 不会打印关于为什么参数与预期 #2 中的谓词不匹配的诊断。这大概是因为期望 #1 是第一个失败的(?)。

如果我省略了期望 #1,那么失败是冗长的,大致如下:

我正在使用自定义匹配器IsLike,并且遇到了生成非常明确的不匹配原因的麻烦,我希望将它们打印出来。我也不想放弃期望#1,因为它位于“默认”部分,默认情况下,我不希望在其余测试中调用该模拟。

0 投票
2 回答
4835 浏览

c++ - Google Mock:为什么期望的部分排序比总排序更难满足?

我主要使用 GoogleMock 的有序期望,所以所有EXPECT_CALLs 都写在对象的范围内testing::InSequence

现在我想放宽排序,所以我将期望分成 2 个序列。你会说测试应该通过,但没有——它失败了,抱怨未满足的先决条件。我应该如何推理?

编辑:我的代码的简化版本:

所以如果 InSequence 嵌套在for循环内,我应该有一个偏序,这是一个宽松的要求,与 InSequence 在外面的情况相比。

我得到的错误:

然后,在测试结束时:

0 投票
1 回答
587 浏览

objective-c - iOS8 在进行单元测试时出现错误的访问异常

我有一系列使用 XCTest 框架编写的单元测试。这些最初是在 iOS7 上创建的,然后在 iOS8 设备上的 xCode6 中执行。测试按顺序执行,但随后我得到以下代码块的 EXC_BAD_ACCESS (code= 1, address 0xc)。当使用 xcode 中的“测试”命令执行测试时会发生这种情况。

如果我从测试左侧面板单独执行此测试,它会正常通过或失败。

这就是我认为我正在做的事情:

  • 设置期望
  • 获取数据源(旧的立即返回)
  • 从网络资源异步更新数据源。
  • 测试用例收到委托回调通知并满足预期

如何确保我可以毫无例外地执行所有单元测试?

//单元测试

//打回来