Während @ Boris-lipschitz ist richtig, wenn Ihr Job kontinuierlich ist (wie op sagt es ist), können Sie nichts nach dem Aufruf Host. RunAndBlock().
Wenn Sie den Host jedoch in einem separaten Thread ausführen, können Sie mit dem Test wie gewünscht fortfahren. Allerdings müssen Sie am Ende des Tests eine Art Abfrage durchführen, um zu wissen, wann der Job ausgeführt wurde.
Beispiel
Funktion (eine einfache Kopie von einem Klecks zum anderen, erstellt von Blob ausgelöst) getestet werden:
public void CopyBlob(
[BlobTrigger("input/{name}")] TextReader input,
[Blob("output/{name}")] out string output)
{
output = input.ReadToEnd();
}
Testfunktion:
[Test]
public void CopyBlobTest()
{
var blobClient = GetBlobClient("UseDevelopmentStorage=true;");
//Start host in separate thread
var thread = new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
var host = new JobHost();
host.RunAndBlock();
});
thread.Start();
//Trigger job by writing some content to a blob
using (var stream = new MemoryStream())
using (var stringWriter = new StreamWriter(stream))
{
stringWriter.Write("TestContent");
stringWriter.Flush();
stream.Seek(0, SeekOrigin.Begin);
blobClient.UploadStream("input", "blobName", stream);
}
//Check every second for up to 20 seconds, to see if blob have been created in output and assert content if it has
var maxTries = 20;
while (maxTries-- > 0)
{
if (!blobClient.Exists("output", "blobName"))
{
Thread.Sleep(1000);
continue;
}
using (var stream = blobClient.OpenRead("output", "blobName"))
using (var streamReader = new StreamReader(stream))
{
Assert.AreEqual("TestContent", streamReader.ReadToEnd());
}
break;
}
}
Von Code Perspektive Funktionalitätstests ich sagen würde, ist, Sie können die Funktionseinheit Test innerhalb der WebJob void-Methode, die sowieso ein Eintrag Punkt, wo Sie nicht viel Code haben sollten. Wenn Sie wirklich einen Integrationstest durchführen möchten, fügen Sie eine Bedingung in Ihrem Code hinzu, um die Antwort auf einen Datenspeicher auszugeben, der eventuell aktiviert werden kann. Natürlich ist dies nur für Testnachrichten. – TusharJ