标签: stub

Assert.Inconclusive的用法

我想知道有人应该如何使用Assert.Inconclusive().

我正在使用它,如果我的单元测试即将失败的原因不是测试的原因.

例如,我在类上有一个方法来计算int数组的总和.在同一个类中,还有一种计算元素平均值的方法.它通过调用sum并将其除以数组的长度来实现.

为Sum()编写单元测试很简单.但是,当我为Average()编写测试时,Sum()失败,那么Average()也可能失败.

平均值的失败并不清楚它失败的原因; 它失败的原因不是它应该测试的原因.这就是为什么我会检查Sum()是否返回正确的结果,否则我是Assert.Inconclusive().

这被认为是好习惯吗?什么是Assert.Inconclusive用于?或者我应该通过隔离框架来解决前面的例子?

.net tdd assert mocking stub

25
推荐指数
4
解决办法
2万
查看次数

有没有办法在Test :: Unit中撤消任何实例的Mocha存根

就像这个问题一样,我也在使用Ryan Bates的nifty_scaffold.它具有使用Mocha的any_instance方法强制在隐藏在控制器后面的模型对象中的"无效"状态的理想方面.

与我链接的问题不同,我不使用RSpec,而是使用Test :: Unit.这意味着这两个以RSpec为中心的解决方案对我来说不起作用.

是否有一般(即:使用Test :: Unit)方法来删除any_instance存根?我相信它在我的测试中造成了一个错误,我想验证一下.

ruby testing mocking stub mocha.js

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

使用Rhino Mocks对物业进行捣乱

使用RhinoMocks,我试图Stub一个属性的getter值.该属性被定义为仅具有getter访问权限的接口的一部分.

但是我收到错误"无效的呼叫,已使用最后一次呼叫或未进行任何呼叫(确保您正在调用虚拟(C#)/可覆盖(VB)方法)." 我明白这可能意味着我存在的财产不是虚拟的; 但它是接口的一部分,我不确定这是否是我收到此错误的原因..

下面是代码框架.如果我取消注释"stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();"的行,那么我得到一个新错误"属性必须是读/写".我搜索了SO并找到了这个页面.但建议的解决方案对我没有帮助.有什么想法吗?

public interface IStore {
        string StoreDeviceID {get;}
        //other methods
    }

    public static class Store {
        private IStore Repository;

        public void SetRepository(IStore rep){
            Repository = rep;
        }

        public StoredeviceID {
            get{
                return Repository.StoreDeviceID;
            }
        }

        //other methods
    }

    public class TestClass {
        [Test]
        public void TestDeviceID() {
            var stubRepository =
                MockRepository.GenerateStub<IStore>();
            Store.SetRepository(stubRepository);

            //stubRepository.Stub(x => x.StoreDeviceID).PropertyBehavior();
            SetupResult.For(stubRepository.StoreDeviceID).Return("test");

            Assert.AreSame(Store.StoreDeviceID, "test");
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# rhino-mocks properties stub

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

RSpec:如何存根继承方法current_user(没有设计)?

我有一个基于MHartl的RoR4教程的控制器

就像MHartl一样,我没有使用Devise,我推出了自己的身份验证系统

由于UsersController#Edit视图有一个调用current_user.admin?和控制器调用,因此RSpec出现问题@path_switch = path_switch

我不断得到RSpec错误:

1) User Pages Edit 
 Failure/Error: visit edit_user_path(user)
 NoMethodError:
   undefined method `admin?' for nil:NilClass
 # ./app/controllers/users_controller.rb:106:in `path_switch'
 # ./app/controllers/users_controller.rb:53:in `edit'
 # ./spec/requests/user_pages_spec.rb:54:in `block (3 levels) in <top (required)>'
Run Code Online (Sandbox Code Playgroud)

UsersController:

class UsersController < ApplicationController
  ...
  def edit
    @user = User.find(params[:id])
    @path_switch ||= path_switch                        #error
  end
  ...
  def path_switch
    if current_user.admin?                               #error
      users_path
    else
      root_path
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我发现这篇非常有用的文章让我希望我能走上正轨,但我无法让它发挥作用.

据我所知(更新):

user_pages_spec.rb:

require 'spec_helper'
require 'support/utilities' …
Run Code Online (Sandbox Code Playgroud)

rspec ruby-on-rails stub ruby-on-rails-4

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

使用Sinon对React组件方法进行存根

我正在尝试将React组件方法存根用于测试目的:

var Comp = React.createClass({
  displayName: "Comp",

  plop: function() {
    console.log("plop");
  },

  render: function() {
    this.plop();
    return React.DOM.div(null, "foo");
  }
});

var stub = sinon.stub(Comp.type.prototype, "plop");
React.addons.TestUtils.renderIntoDocument(Comp());
sinon.assert.called(stub); // throws
Run Code Online (Sandbox Code Playgroud)

这令人遗憾地继续将"plop"打印到控制台上......并且断言失败了.

注意:直接存在spec对象方法是有效的,但是你必须分别导出组件构造函数和规范,这样它们在测试中都可用...而且,你甚至需要在创建组件类之前存根规范; 不太方便:

var CompSpec = {
  displayName: "Comp",

  plop: function() {
    console.log("plop");
  },

  render: function() {
    this.plop();
    return React.DOM.div("foo");
  }
};

var stub = sinon.stub(CompSpec, "plop");
var Comp = React.createClass(CompSpec);
React.addons.TestUtils.renderIntoDocument(Comp());

// plop() is properly stubbed, so you can
sinon.assert.called(stub); // pass
Run Code Online (Sandbox Code Playgroud)

您能想到另一种轻松存根React组件方法的策略吗?

javascript stub sinon reactjs

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

如何获取`matplotlib`、`numpy`、`scipy`、`pandas` 等的存根文件?

我知道用于类型检查和静态分析的内置 Python 库的存根文件随附mypy或 PyCharm 安装。我怎样才能获得存根文件matplotlibnumpyscipypandas,等?

python stub mypy

22
推荐指数
3
解决办法
4541
查看次数

请解释如何创建PHP的Phar存根

我正在尝试创建一个非常简单的PHP CLI应用程序,可以从命令行作为phar文件运行:

# php myProject.phar
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的:

我的项目

我的项目位于一个名为的目录中MyProject,它包含以下两个文件:

 |-- createPhar.php
 `-- bootstrap.php
Run Code Online (Sandbox Code Playgroud)

bootstrap.php中

bootstrap.php文件包含:

<?php
print phpversion() . PHP_EOL;
print 'i am some script' . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)

当我从我的Ubuntu命令行运行此脚本时:

# cd MyProject 
# php bootstrap.php
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

5.3.2-1ubuntu4.9
i am some script
Run Code Online (Sandbox Code Playgroud)

createPhar.php

createPhar.php文件旨在将项目转换为Phar存档.它看起来像这样:

<?php    
$phar = new Phar('MyProject.phar');
$phar->addFile('bootstrap.php');
$phar->setStub( $phar->createDefaultStub('bootstrap.php') );
Run Code Online (Sandbox Code Playgroud)

当我运行该脚本时......

# php createPhar.php
Run Code Online (Sandbox Code Playgroud)

... MyProject.phar在我的项目目录中创建了一个名为的新文件.

|-- bootstrap.php
|-- createPhar.php
`-- MyProject.phar
Run Code Online (Sandbox Code Playgroud)

现在这是问题所在

当我运行phar文件时......

# php MyProject.phar 
Run Code Online (Sandbox Code Playgroud)

...我希望看到与运行bootstrap.php脚本时相同的输出.

相反,我什么都看不见 完全没有输出.这意味着我的bootstrap.php …

php stub phar

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

PowerMock:来自父类的存根方法

我正在使用PowerMock,我想知道如何保持子类的所有行为,但是存根super调用可能被子进程覆盖.

说我有这个班:

public class A {
    public String someMethod() {
        return "I don't want to see this value";
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个子类:

public class B extends A {
    @Override
    public String someMethod() {
        return super.someMethod() + ", but I want to see this one";
    }
}
Run Code Online (Sandbox Code Playgroud)

如何将呼叫存根到super.someMethod()

我试过了

@Test
public void test() {
    B spy = PowerMockito.spy(new B());
    PowerMockito.doReturn("value").when((A)spy).someMethod();

    assertEquals("value, but I want to see this one", spi.someMethod());
}
Run Code Online (Sandbox Code Playgroud)

java overriding stub super powermock

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

模拟在RhinoMocks中返回密封类的方法

运行此代码:

_foo = MockRepository.GenerateStub<IBar>();
_foo.Stub(x => x.Foo()).Return("sdf");
Run Code Online (Sandbox Code Playgroud)

什么时候

public interface IBar
{
   string Foo();
}

public class Bar : IBar
{
   public string Foo()
   {
      throw new NotImplementedException();
   }
}
Run Code Online (Sandbox Code Playgroud)

抛出NotSupportedException - "无法创建密封类的模拟".我明白为什么你不能模拟一个密封的类(虽然在TypeMock中有解决方案),但是模拟一个返回密封类(字符串)的类有什么问题?

c# rhino-mocks mocking stub sealed

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

如何在ES6中使用sinon存根静态方法?

var MyClassStub = sinon.createStubInstance(MyClass);
Run Code Online (Sandbox Code Playgroud)

MyClassStub不包含静态方法.如何解决?

stub node.js sinon

17
推荐指数
2
解决办法
7829
查看次数