javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

generator

coroutine

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

performance

branch-prediction

c#-最小起订量-如何验证是否通过s设置了属性值

考虑此类:

public class Content
{      
   public virtual bool IsCheckedOut {get; private set;}
   public virtual void CheckOut()
   {
      IsCheckedOut = true;
   }

   public virtual void CheckIn()
   {
      //Do Nothing for now as demonstrating false positive test.
   }
}

Checkin方法有意为空。 现在,我有一些测试方法来验证调用每个方法的状态。

[TestMethod]
public void CheckOutSetsCheckedOutStatusToTrue()
{
    Content c = new Content();    
    c.CheckOut();
    Assert.AreEqual(true, c.IsCheckedOut); //Test works as expected
}

[TestMethod]
public void CheckInSetsCheckedOutStatusToFalse()
{
    Content c = new Content();
    c.CheckIn();
    Assert.AreEqual(false, c.IsCheckedOut); //Test does not work as expected
}

由于错误原因,第二次测试通过。 那么,如何使用模拟(moq)来验证CheckIn设置了IsCheckedOut属性?

谢谢。

编辑

需要说明的是:我有一个称为CheckIn()的方法,其作用是将IsCheckedOut状态设置为false。

您将在上面的测试代码中看到,即使我未将属性值设置为false,测试也将返回false。 这是预料之中的,这里没有错。

我认为我的问题特别是如何验证Check In()方法是否已将IsChecked Out属性设置为false? 这就是我所说的行为验证。

我相信某些评论建议做一些等同于状态验证的事情? 如果是这样,我不相信在我们可以简单使用的情况下完全嘲笑这一部分没有任何价值:

Content c = new Content();    
c.CheckIn();    
Assert.AreEqual(false, c.IsCheckedOut); //State verification

当然我可能是错的,所以请帮助我阐明这些概念:)

trans by 2020-08-12T01:17:35Z

javascript-开玩笑:禁用单元测试中的控制台的更好方法

我想知道是否有更好的方法来禁用特定的Jest测试中的控制台错误(即,在每次测试之前/之后还原原始控制台)。

这是我目前的方法:

describe("Some description", () => {
  let consoleSpy;

  beforeEach(() => {
    if (typeof consoleSpy === "function") {
      consoleSpy.mockRestore();
    }
  });

  test("Some test that should not output errors to jest console", () => {
    expect.assertions(2);

    consoleSpy = jest.spyOn(console, "error").mockImplementation();

    // some function that uses console error
    expect(someFunction).toBe("X");
    expect(consoleSpy).toHaveBeenCalled();
  });

  test("Test that has console available", () => {
    // shows up during jest watch test, just as intended
    console.error("test");
  });
});

有没有更干净的方法来完成同一件事? 我想避免使用spyOn,但是mockRestore似乎只能使用它。

谢谢!

trans by 2020-08-10T01:20:19Z

java-是否可以创建一个使用EasyMock实现多个接口的模拟对象?

是否可以创建一个使用EasyMock实现多个接口的模拟对象?

例如,接口Foo和接口Closeable

在Rhino Mocks中,创建模拟对象时可以提供多个接口,但是EasyMock的Foo方法仅采用一种类型。

是否可以通过EasyMock来实现这一目标,而不必依靠创建扩展FooCloseable的临时接口的后备,然后进行模拟呢?

trans by 2020-08-09T10:37:16Z

CodeGo.net>如何模拟moq Controller.User

我有几个ActionMethods来查询Controller.User的角色,如下所示

bool isAdmin = User.IsInRole("admin");

在那种情况下方便地行动。

我开始用这样的代码对这些方法进行测试

[TestMethod]
public void HomeController_Index_Should_Return_Non_Null_ViewPage()
{
    HomeController controller  = new HomePostController();
    ActionResult index = controller.Index();

    Assert.IsNotNull(index);
}

并且该测试失败,因为未设置Controller.User。任何想法?

trans by 2020-08-08T20:01:37Z

单元测试-在J中模拟静态块

我对Java的座右铭是“仅仅因为Java具有静态块,并不意味着您应该使用它们。” 除了笑话,Java中有许多技巧使测试成为噩梦。 我最讨厌的两个是匿名类和静态块。 我们有很多使用静态块的遗留代码,这些是我们编写单元测试时最讨厌的点之一。 我们的目标是能够以最小的代码更改为依赖于此静态初始化的类编写单元测试。

到目前为止,我对我的同事的建议是将静态块的主体移到专用的静态方法中,并将其称为staticInit。然后可以从静态块中调用此方法。 对于单元测试,依赖于该类的另一个类可以轻松地使用JMockit模拟DependentClassTest,而不执行任何操作。 让我们在示例中看一下。

public class ClassWithStaticInit {
  static {
    System.out.println("static initializer.");
  }
}

将更改为

public class ClassWithStaticInit {
  static {
    staticInit();
  }

  private static void staticInit() {
    System.out.println("static initialized.");
  }
}

这样我们就可以在JUnit中执行以下操作。

public class DependentClassTest {
  public static class MockClassWithStaticInit {
    public static void staticInit() {
    }
  }

  @BeforeClass
  public static void setUpBeforeClass() {
    Mockit.redefineMethods(ClassWithStaticInit.class, MockClassWithStaticInit.class);
  }
}

但是,该解决方案也有其自身的问题。 您不能在同一JVM上运行DependentClassTestClassWithStaticInitTest,因为您实际上希望静态块为ClassWithStaticInitTest运行。

您将如何完成此任务? 还是您认为更好的,非基于JMockit的解决方案更干净?

trans by 2020-08-06T23:00:40Z

asp.net mvc-ASP / NET MVC:带有/会话的测试控制器? 嘲笑吗

我在这里重新阅读了一些答案:测试视图和控制器以及模拟,但是我仍然不知道如何测试一个读取并设置Session值(或任何其他基于上下文的变量)的ASP.NET MVC控制器。如何为我的测试方法提供(会话)上下文? 在嘲笑答案吗? 有人有例子吗?基本上,我想在调用controller方法并使控制器使用该会话之前伪造一个会话。 有任何想法吗?

trans by 2020-08-05T11:27:29Z

测试-什么是对象模拟,何时需要?

许多人在编写单元测试时都使用模拟对象。 什么是模拟对象? 为什么我需要一个? 我需要模拟对象框架吗?

trans by 2020-08-03T19:07:28Z

单元测试-Java中的模拟对象是什么?

我想知道Java中有什么模拟对象。 我们为什么要创建它们,它们的用途是什么?

trans by 2020-08-01T15:44:49Z

我如何模拟Django信号处理程序?

我有一个通过装饰器连接的signal_handler,就像这样一个非常简单的东西:

@receiver(post_save, sender=User, 
          dispatch_uid='myfile.signal_handler_post_save_user')
def signal_handler_post_save_user(sender, *args, **kwargs):
   # do stuff

我想做的是在测试中使用模拟库[http://www.voidspace.org.uk/python/mock/]对其进行模拟,以检查django调用它的次数。 目前,我的代码是这样的:

def test_cache():
    with mock.patch('myapp.myfile.signal_handler_post_save_user') as mocked_handler:
        # do stuff that will call the post_save of User
    self.assert_equal(mocked_handler.call_count, 1)

这里的问题是,即使被嘲笑,原始信号处理程序也会被调用,这很可能是因为_support_function装饰器将信号处理程序的副本存储在某个地方,所以我在模拟错误的代码。

那么问题来了:如何模拟信号处理程序以使测试工作?

请注意,如果我将信号处理程序更改为:

def _support_function(*args, **kwargs):
    # do stuff

@receiver(post_save, sender=User, 
          dispatch_uid='myfile.signal_handler_post_save_user')
def signal_handler_post_save_user(sender, *args, **kwargs):
   _support_function(*args, **kwargs)

而我模拟了_support_function,一切正常。

trans by 2020-07-31T22:18:00Z

java-EasyMock:如何在没有警告的情况下创建通用类的模拟?

代码

private SomeClass<Integer> someClass;
someClass = EasyMock.createMock(SomeClass.class);

给我一个警告“类型安全:SomeClass类型的表达式需要未经检查的转换才能符合SomeClass <Integer>”。

trans by 2020-07-29T20:08:18Z

单元测试-用moq模拟虚拟只读属性

尽管可以手动完成,但我找不到方法,所以为什么不使用最小起订量呢?

trans by 2020-07-29T00:49:10Z

c#-用Moq调用原始方法

我有一个具有2个方法GetAllProducts和GetProductByType的ProductRepository,我想测试GetProductByType的逻辑。 在内部,GetProductByType调用GetAllProducts,然后过滤正确的对象。

public virtual IEnumerable<Product> GetAllProducts()
{
    //returns all products in memory, db etc
}

public virtual IEnumerable<Product> GetProductsByType(string type)
{
    return (from p in GetAllProducts() where p.Type == type select p).ToList();
}

因此,在我的测试中,我想模拟对GetAllProducts的调用,以便它返回在我的测试中定义的产品列表,然后调用原始的GetProductsByType,它将使用模拟的GetAllProducts。

我正在尝试类似以下代码的操作,但是未执行原始的GetProductByType,它也已被模拟。 在TypeMock中,我有一个CallOriginal方法可以解决此问题,但是我无法通过Moq弄清楚。 有任何想法吗?

var mock = new Mock<ProductRepository>();
mock.Setup(r => r.GetAllProducts()).Returns(new List<Product>() {p1, p2, p3});
var result = mock.Object.GetProductsByType("Type1");
Assert.AreEqual(2, result.Count());
trans by 2020-07-26T13:59:27Z

C#-需要帮助以了解Moq b

我一直在查看Moq文档,但是注释太短了,以至于我无法理解它可以做的每件事。

我不明白的第一件事是m

使用此功能而不是仅仅输入一些值是否有优势? 我知道人们会说如果您不关心值就使用它,但是如果您不关心值,就不能只做一个“ a”之类的事情吗? 这似乎更像打字。

其次,什么时候成为您不关心价值的榜样? 我以为Moq需要值来匹配东西。

我根本不了解m的用途或使用方法。 我不理解该示例及其试图显示的内容。

接下来,我不知道何时使用m(及其SetupSet方法和类似方法)。 您为什么要限制设置内容的次数? 我有一些SetupSet值,我需要使用两次。 我为什么要限制一次呢? 这只会使测试失败。 这是在阻止其他人向您的代码中添加其他代码吗?

我不知道如何使用m它用什么来设置属性?

我也不明白为什么有这么多不同的方式来设置属性以及它们之间的区别是什么。 该文档具有:

SetupGet(of property)
SetupGet<TProperty>

我注意到Moq中的许多内容显示mSetupSet-它们之间有什么区别,使用时它们看起来像什么?

我也不明白他们为什么有m。您是否不使用SetupSet来设置属性?SetupSet在文档中有五种不同的使用方式。 再加上一个SetupProperty。所以我不明白为什么会有这么多。

从侧面讲,我想知道lambda中使用的变量是否独立于其他lambda。 例如。:

mock.setup(m => m.Test);
stop.setup(m => m.Test);

可以吗,或者变量m之间是否会有冲突?

最后,我正在观看此视频,我想知道它是否显示Visual Studio。 他的Intellisense看起来与众不同。 一个灯泡为他突然冒出(我不高兴,因为它带回了人们对Netbeans的痛苦回忆),并且从一个打开的大括号到关闭的大括号等等都有行。

谢谢 :)

trans by 2020-07-25T16:13:54Z

模拟-Moq和Rhino.mocks的功能是什么?

我找不到Moq和Rhino的逐项特征比较。 所有的问题都是“您更喜欢哪个,为什么?”,或者“这是您如何在犀牛中进行简单的模拟以及如何在最小定量中完成”。

我无法在任何地方找到深入的比较。 我知道语法上的差异,因此我没有在寻找答案。 我正在寻找功能比较。 例如:

  • Rhino的线程具有Expect.On()嘲笑。 Moq可以这样做吗?

  • 那么多模拟(实现多个接口一个模拟)。 Moq可以这样做吗?

  • 我相信Moq现在可以嘲笑受保护的成员。 Rhino可以这样做吗?

编辑:我最终也查看了其他一些.Net框架。

trans by 2020-07-24T15:41:23Z

单元测试-为什么模拟类是如此糟糕?

我最近与一位同事讨论了关于嘲讽的问题。 他说,模拟类非常糟糕,仅在少数情况下不应该这样做。

他说,只有接口应该被模拟,否则是架构错误。

我不知道为什么这种说法(我完全相信他)如此正确? 我不知道,我想被说服。

我是否错过了嘲讽的要点(是的,我阅读了马丁·福勒的文章)

trans by 2020-07-22T18:27:49Z

java-如何使用Mocki验证未使用任何参数组合调用的模拟方法

如何使用Mockito验证完全没有调用模拟方法-带有参数的任何组合?

例如,我有一个对象myObject,该对象正在使用第二个模拟对象someMethodOrOther(),该对象具有方法someMethodOrOther()

我想致电someMethodOrOther(),并验证是否没有调用someMethodOrOther()-使用参数的任何组合。

例如:

myObject.doSomeStuff();

verify(myMockedOtherObject, never()).someMethodOrOther();

除非我不能这样做,因为someMethodOrOther()需要提供特定的参数。

trans by 2020-07-22T18:02:13Z

java-使用Mocki存根采用Class <T>作为参数的方法

有一个通用的方法,将类作为参数,我在使用Mockito进行存根时遇到问题。 该方法如下所示:

public <U extends Enum<U> & Error, T extends ServiceResponse<U>> T validate(
    Object target, Validator validator, Class<T> responseClass,
    Class<U> errorEnum);

真是太糟糕了,至少对我来说...我可以想象没有它就可以生活,但是其余的代码库都愉快地使用了它...

在单元测试中,我打算将该方法存根以返回一个新的空对象。 但是,我该如何使用Mockito? 我试过了:

when(serviceValidatorStub.validate(
    any(), 
    isA(UserCommentRequestValidator.class), 
    UserCommentResponse.class, 
    UserCommentError.class)
).thenReturn(new UserCommentResponse());

但是由于我要混合并匹配匹配器和原始值,因此会得到“ org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的无效使用!”

trans by 2020-07-22T01:36:22Z

python-如何模拟在包的模块中定义的函数?

我有以下结构:

|-- dirBar
|   |-- __init__.py
|   |-- bar.py
|-- foo.py
`-- test.py

bar.py

def returnBar():
    return 'Bar'

foo.py

from dirBar.bar import returnBar

def printFoo():
    print returnBar()

test.py

from mock import Mock

from foo import printFoo
from dirBar import bar

bar.returnBar = Mock(return_value='Foo')

printFoo()

test.py的结果是Foo

如何模拟test.py以使其返回Foo,以便printFoo打印它?

编辑:不修改任何其他文件test.py

trans by 2020-07-21T03:53:53Z

单元测试-Android测试驱动开发

我在制作Android应用程序方面具有丰富的经验。 对于我的新项目,我们决定进行测试驱动开发(TDD)。 我一直忙于在Robotium上进行用户场景测试,并且效果很好,看起来也很容易。

对于单元测试,我尝试使用(MockContext Android类)模拟Context,但是无法这样做。 我浏览了该博客[http://sites.google.com/site/androiddevtesting/]和该[http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html ],这表明Android应用程序中的模拟仍然非常有限且困难,建议使用PowerMock,jMockit,JeasyTest或Roboelectric(与Mockito和Maven结合使用),甚至使用RoboGuice。

我想从你们那里获得任何建议,关于您认为哪种单元测试框架最适合测试Android应用程序。 (特别是测试Android类,可能会提供模拟上下文和其他模拟功能,以便使我的测试用例尽可能独立)。 任何建议或指示都会有所帮助。 谢谢

trans by 2020-07-20T23:36:30Z

php-在PHPUnit中,如何在连续调用模拟方法时指示不同的with()?

我想用不同的预期参数两次调用我的模拟方法。 这是行不通的,因为expects($this->once())在第二次呼叫时将失败。

$mock->expects($this->once())
     ->method('foo')
     ->with('someValue');

$mock->expects($this->once())
     ->method('foo')
     ->with('anotherValue');

$mock->foo('someValue');
$mock->foo('anotherValue');

我也尝试过:

$mock->expects($this->exactly(2))
     ->method('foo')
     ->with('someValue');

但是,如何添加with()来匹配第二个调用?

trans by 2020-07-20T03:05:30Z

1 2 3 4 5 6 7 下一页 共7页