![](/img/trans.png)
[英]Automated Unit testing for Javascript integrated with CruiseControl, nUnit, nAnt and ASP.net MVC
[英]JavaScript Unit Testing integrated with CruiseControl.NET
我正在尋找為JS提供單元測試的框架。 后來,我將不得不將它與CruiseControl.NET集成。 我有很多使用JS的asp網站,我需要自動化測試。 例如,我使用本地JSUnit(可能是其他框架),這對我來說很容易,但我不知道如何將它與CC.NET集成。 也許你可以告訴我如何開始?
注意:它必須是CC.NET,未指定單元測試的框架
我意識到這是一個相當古老的問題,但我有類似的興趣所以我想我會發布一個答案,無論如何。 我假設您正在編寫OO樣式的JavaScript並希望測試這些對象。
人們推薦的一個常見解決方案是運行JsTestDriver ,這絕對是一個很好的工具; 話雖這么說,它需要在您的機器和構建服務器上安裝JVM。 除了需要JVM之外,JsTestDriver仍然依賴於運行一個或多個“Slave”瀏覽器。 就個人而言,我認為單元測試JavaScript對象時不應該擔心。 如果重點是UI測試,那么使用像WatiN這樣的工具,在我看來是一種不同類型的測試。 瀏覽器應該像你使用JSMock或JsMockito (我最喜歡)模擬任何其他視圖一樣。
為此,我使用Windows Script Host多年來運行我的JavaScript單元測試。 這有幾個好處:
當然有幾個缺點:
使用JSTest.NET (我已經使用多年,但剛剛在網上發布的方法),你最終會得到一個可能類似於以下內容的測試夾具:
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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.