与CruiseControl.NET集成的JavaScript单元测试
我正在寻找为JS提供单元测试的框架。稍后,我将不得不将其与CruiseControl.NET集成。我有很多使用JS的asp网站,我需要为它们自动化测试。例如,我使用了本地JSUnit(可能是其他框架),这对我来说非常简单,但我不知道如何将其与CC.NET集成。也许你能教我怎么开始与CruiseControl.NET集成的JavaScript单元测试,javascript,unit-testing,cruisecontrol.net,Javascript,Unit Testing,Cruisecontrol.net,我正在寻找为JS提供单元测试的框架。稍后,我将不得不将其与CruiseControl.NET集成。我有很多使用JS的asp网站,我需要为它们自动化测试。例如,我使用了本地JSUnit(可能是其他框架),这对我来说非常简单,但我不知道如何将其与CC.NET集成。也许你能教我怎么开始 注意:它必须是CC.NET,单元测试框架未指定我意识到这是一个相当老的问题,但我有类似的兴趣,所以我想我会发布一个答案。我假设您正在编写OO风格的JavaScript,并希望测试这些对象 人们推荐的一个常见解决方案是运
注意:它必须是CC.NET,单元测试框架未指定我意识到这是一个相当老的问题,但我有类似的兴趣,所以我想我会发布一个答案。我假设您正在编写OO风格的JavaScript,并希望测试这些对象 人们推荐的一个常见解决方案是运行,这绝对是一个很棒的工具;也就是说,它需要在您的机器上以及构建服务器上安装JVM。除了需要JVM,JsTestDriver还依赖于运行一个或多个“从”浏览器。我个人认为,在单元测试JavaScript对象时,这不应该成为一个问题。如果重点是UI测试,那么在我看来,使用诸如and之类的工具是一种不同类型的测试。浏览器应该是模拟的,就像你用或模拟任何其他视图一样(我最喜欢) 为此,多年来我一直在运行JavaScript单元测试。这有几个优点:
using JSTest;
using JSTest.ScriptLibraries;
using Xunit;
namespace JSTest.Sample
{
public class EventDispatcherTests
{
private readonly TestScript _testScript = new TestScript();
public EventDispatcherTests()
{
//Append File(s) Under Test.
_testScript.AppendFile(@"..\..\..\Web\Scripts\eventDispatcher.js");
//Append Mock/Assertion libraries.
_testScript.AppendBlock(new JsHamcrestLibrary());
_testScript.AppendBlock(new JsMockitoLibrary());
//Append Common "Setup" Scripts.
_testScript.AppendBlock(@"var dispatcher = new EventDispatcher();
var mockHandler = JsMockito.mockFunction();
var mockPredicate = JsMockito.mockFunction();
var fakeEvent = { eventType: 'CommentAdded', data: 'Sample Comment' };
");
}
[Fact]
public void ProcessEventInvokesAttachedHandler()
{
...
}
[Fact]
public void ProcessEventGracefullyHandlesPredicateException()
{
_testScript.RunTest(@"var mockPredicateAlternate = JsMockito.mockFunction();
JsMockito.when(mockPredicateAlternate)(fakeEvent).thenThrow('MyException');
dispatcher.attachListener(mockHandler, mockPredicateAlternate);
dispatcher.processEvent(fakeEvent);
JsMockito.verify(mockPredicateAlternate)(fakeEvent);
JsMockito.verifyZeroInteractions(mockHandler);
");
}
}
}
这种方法对我来说非常有效,而且设置起来非常简单。基本上,这就像编写常规的单元测试,但是使用JavaScript 我不明白-你是必须编写c代码来包装你的每个javascript测试,还是用c语言编写测试?@Johnny上面的例子是c代码包装javascript测试,但这不是首选的方法。。。可以在Wiki上找到与xUnit/nUnit/MSTest的干净集成,并允许使用带有C#test工具的JavaScript编写测试。还有一些例子@